我有一个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中(AssemblyName文件名,字符串codeBase,证据AssemblySecurity,程序集locationHint,StackCrawlMark&stackMark,布尔throwOnFileNotFound,布尔Introspection)
在System.Reflection.Assembly.nLoad中(AssemblyName文件名,字符串codeBase,证据AssemblySecurity,程序集locationHint,StackCrawlMark&stackMark,布尔throwOnFileNotFound,布尔forIntrospection)
在System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef,证据assemblySecurity,StackCrawlMark&stackMark,布尔值用于自省)
在System.Reflection.Assembly.InternalLoad处(字符串assemblyString,证据assemblySecurity,StackCrawlMark&stackMark,布尔值用于自省)
在System.AppDomain.Load(String assemblyString)
在Microsoft.Deployment.WindowsInstaller.CustomActionProxy.GetCustomActionMethod(会话会话,字符串assemblyName,字符串className,字符串methodName)


...上面的特定问题是“ System.BadImageFormatException:无法加载文件或程序集'WIXCustomActions'或其依赖项之一。此程序集是由比当前加载的运行时新的运行时构建的,无法加载。”

该错误的措辞似乎表明存在诸如未正确引用的.NET框架之类的东西(我在自定义操作及其依赖项中均将3.5定位为目标),但我不知道在哪里进行更改以解决此问题。有任何想法吗?

....不确定这是否有帮助,但这是我运行的CustomActions包批处理文件,用于创建包含自定义操作功能的.dll包:

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

调用“ C:\ Program Files \ Microsoft Visual Studio 10.0 \ VC \ vcvarsall.bat”

@回声

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

最佳答案

我修好了它!

问题是在package.bat文件期间运行的csc实际上是框架的2.0版本...

我将批处理文件更改为从v2.0.xxxxx文件夹中的文件运行c:\ WINDOWS \ Microsoft.NET \ v3.5 \中的文件,现在可以正常使用而不会引发此错误。

关于wix - 具有“定制操作”的WIX安装程序:“由比当前加载的运行时新的运行时构建,无法加载。”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4548249/

10-09 01:19