Установщик WIX с пользовательскими действиями: «создан средой выполнения, более новой, чем текущая загруженная среда, и не может быть загружена». - PullRequest
3 голосов
/ 28 декабря 2010

У меня есть установщик 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.LoadBCAConfigDefaults Ошибка: не удалось загрузить класс пользовательских действий WIXCustomActions.CustomActions из сборки: WIXCustomActions System.BadImageFormatException: не удалось загрузить файл или сборку 'WIXCustomActions' или одну из ее зависимостей. Эта сборка создается средой выполнения, более новой, чем текущая загруженная среда, и не может быть загружена. Имя файла: 'WIXCustomActions' в System.Reflection.Assembly._nLoad (имя_сборки имя_файла, строковое codeBase, доказательство сборкиSecurity, расположение сборкиHint, StackCrawlMark & ​​stackMark, логическое значение throwOnFileNotFound, логическое значение для интроспекции) в System.Reflection.Assembly.nLoad (имя_сборки имя_файла, строковое codeBase, доказательство сборкиSecurity, расположение сборкиHint, StackCrawlMark & ​​stackMark, логическое значение throwOnFileNotFound, логическое значение дляIntrospection) в System.Reflection.Assembly.InternalLoad (AssemblyName assemblyRef, Evidence AssemblySecurity, StackCrawlMark & ​​stackMark, Boolean forIntrospection) в System.Reflection.Assembly.InternalLoad (строка String AssemblyString, Свидетельство AssemblySecurity, StackCrawlMark & ​​stackMark, логическое значение для интроспекции) в System.AppDomain.Load (String assemblyString) в Microsoft.Deployment.WindowsInstaller.CustomActionProxy.GetCustomActionMethod (сеанс сеанса, строковое имя сборки, строковое имя класса, строковое имя метода)

... конкретная проблема, описанная выше, - «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 \ WIXCustomActions .dll "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 \ sdk \ x86 \ sfxca.dll "" C: \ development \ trunk \ PortalsDev \ csharp \ production \ Installers \ WIX \ customactions \ PAServicesWIXCustomActions \ bin \ Debug \ WIXCustomActions.dll "customaction.config Microsoft.Deployment.WindowsInstaller.dll

Ответы [ 5 ]

2 голосов
/ 28 декабря 2010

Я исправил это!

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

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

1 голос
/ 28 декабря 2010

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

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

0 голосов
/ 03 мая 2016

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

<Custom Action="MyCustomAction" After="LaunchConditions">
0 голосов
/ 26 ноября 2015

Это происходит, когда ссылка на Custom Action target Framework не установлена.

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

0 голосов
/ 11 ноября 2014

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

...