Установщик WIX с настраиваемыми действиями: создан средой выполнения более новой, чем текущая загруженная среда выполнения, и не может быть загружен.

У меня есть установщик WIX, который выполняет настраиваемые действия в процессе установки. Когда я запускаю установщик WIX и обнаруживаю свое первое настраиваемое действие, установщик завершается с ошибкой, и я получаю следующее сообщение об ошибке в журнале MSI:

Начало действия 12:03:53: LoadBCAConfigDefaults. SFXCA: Извлечение настраиваемого действия во временный каталог: C: \ DOCUME ~ 1 \ ELOY06 ~ 1 \ LOCALS ~ 1 \ Temp \ MSI10C.tmp- \ SFXCA: Привязка к версии CLR v2.0.50727 Вызов настраиваемого действия WIXCustomActions! WIXCustomActions.CustomActions.LoadBCAConfults Ошибка: не удалось загрузить класс настраиваемых действий WIXCustomActions.CustomActions из сборки: WIXCustomActions System.BadImageFormatException: не удалось загрузить файл или сборку WIXCustomActions или одну из ее зависимостей. Эта сборка создается более новой средой выполнения, чем текущая загруженная среда выполнения, и не может быть загружена. Имя файла: 'WIXCustomActions' в System.Reflection.Assembly._nLoad (AssemblyName имя_файла, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark & ​​stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) в System.RefnameBaseName (имя_сборки) в файле System.Refname.Assembly , Evidence assemblySecurity, Assembly locationHint, StackCrawlMark и stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection) в System.Reflection.Assembly.InternalLoad (AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark & ​​stackMark.StackCrawlMark & ​​stackMring.StackCrawlMark & ​​stackMark.InternalReflection (System.StackMark) AssemblySecurity, StackCrawlMark и stackMark, Boolean forIntrospection) в System.AppDomain.Load (String assemblyString) в Microsoft.Deployment.WindowsInstaller.CustomActionProxy.GetCustomActionMethod (сеанс сеанса, String AssemblyName, String className, String methodName)

... конкретная проблема, указанная выше: «System.BadImageFormatException: не удалось загрузить файл или сборку WIXCustomActions или одну из его зависимостей. Эта сборка создана средой выполнения более новой, чем текущая загруженная среда выполнения, и не может быть загружена».

Слово об этой ошибке, похоже, указывает на что-то вроде неверно указанной платформы .NET или чего-то в этом роде (я нацелен на 3.5 как в моих настраиваемых действиях, так и в его зависимостях), но я не могу понять, где внести изменения для решения этой проблемы. . Любые идеи?

.... Не уверен, что это поможет, но я запускаю командный файл пакета CustomActions для создания пакета .dll, содержащего функции настраиваемых действий:

===============

вызовите "C: \ Program Files \ Microsoft Visual Studio 10.0 \ VC \ vcvarsall.bat"

@echo on

cd "C: \ development \ trunk \ PortalsDev \ csharp \ production \ Installers \ WIX \ customactions \ PAServicesWIXCustomActions"

csc / target: library / r: "C: \ program files \ windows installer xml v3.6 \ sdk \ microsoft.deployment.windowsinstaller.dll" / r: "C: \ development \ trunk \ PortalsDev \ csharp \ production \ Installers \ WIX \ customactions \ PAServicesWIXCustomActions \ bin \ Debug \ eLoyalty.PortalLib.dll "/out:"C:\development\trunk\PortalsDev\csharp\production\Installers\WIX\customactions\PAServicesWIXCustomActions\bin\Debug\WIX" CustomActions.cs

cd "C: \ Program Files \ Windows Installer XML v3.6 \ SDK"

makefxca "C: \ development \ trunk \ PortalsDev \ csharp \ production \ Installers \ WIX \ customactions \ PAServicesWIXCustomActions \ bin \ Debug \ BatchCustomerAnalysisWIXCustomActionsPackage.dll" "c: \ program files \ Windows installer xml v3.6 \ sdkca \ x86 \ sfxca .dll "" C: \ development \ trunk \ PortalsDev \ csharp \ production \ Installers \ WIX \ customactions \ PAServicesWIXCustomActions \ bin \ Debug \ WIXCustomActions.dll "customaction.config Microsoft.Deployment.WindowsInstaller.dll


person Rimer    schedule 28.12.2010    source источник


Ответы (5)


Я ПОЧИНИЛ ЭТО!

Проблема в том, что csc, который работал во время файла package.bat, на самом деле был версией 2.0 фреймворка ...

Я изменил командный файл, чтобы запустить тот, который находится в c: \ WINDOWS \ Microsoft.NET \ v3.5 \, с того, который был в папке v2.0.xxxxx, и теперь он работает без этой ошибки ..

person Rimer    schedule 28.12.2010
comment
Ваш ответ непонятен, что такое package.bat? Я получаю ту же ошибку, но в моем проекте нет такого файла .bat. - person user145400; 12.09.2014

BadImageFormatException, скорее всего, указывает на несоответствие между кодом x86 и x64 в вашем установщике.

Если ваш MSI-файл 32-разрядный, убедитесь, что целевой платформой вашего проекта настраиваемого действия является x86, в противном случае, если ваш установщик 64-разрядный, установите его на x64.

person Dirk Vollmar    schedule 28.12.2010
comment
Оцените ответ, но это 32 и 32 ... Я скомпилировал и прогнал его на одной машине! Я использую WIX 3.6 и VS 2010. - person Rimer; 28.12.2010
comment
Так у вас 64-битная ОС? И ваш MSI настроен на работу как процесс x86? И какова именно платформа ваших .NET-проектов? - person Dirk Vollmar; 28.12.2010
comment
Целевая платформа для проектов .net: 3.5 Framework; ОС 32-разрядная, MSI настроена на работу как Platform Active (x86). Проект настраиваемого действия также нацелен на .NET 3.5. - person Rimer; 28.12.2010

Убедитесь, что условия запуска проекта MSI показывают правильную версию .net.

person Charles Janik    schedule 10.11.2014

Это происходит, когда указанная платформа настраиваемых действий не установлена.

Таким образом, вы можете либо изменить целевую структуру вашего проекта настраиваемых действий, если это возможно, либо проверить для версии .NET Framework.

person Vladimirs    schedule 26.11.2015

У меня была аналогичная проблема, но с .net 4.6 Моя пользовательская dll построена с .net 4.6, но если она не установлена, пакет не работает, как описано выше. Проблема для меня заключалась в том, что настраиваемое действие выполнялось до условия проверки, установлен ли .net 4.6. Поэтому я изменил код на этот:

<Custom Action="MyCustomAction" After="LaunchConditions">
person gigi    schedule 03.05.2016