2013-04-26 158 views
4

我试图在64位过程中在WiX 3.5中运行托管的自定义操作。所涉及的所有项目均配置为以x64构建(如指定的here)。 我的理解是,这个关键是sfxca版本。根据我的构建日志,它正确调用x64版本。在64位的WiX自定义操作

"C:\Program Files (x86)\Windows Installer XML v3.5\bin\..\sdk\MakeSfxCA.exe" "C:\Projects\WiXInstaller\MyCustomActions\obj\x64\Debug\MyCustomActions.CA.dll" "C:\Program Files (x86)\Windows Installer XML v3.5\bin\..\sdk\x64\SfxCA.dll" "C:\Projects\WiXInstaller\MyCustomActions\obj\x64\Debug\MyCustomActions.dll" "C:\lib\wix35\Microsoft.Deployment.WindowsInstaller.dll;..\builds\source\OtherDll.dll;C:\Projects\WiXInstaller\MyCustomActions\CustomAction.config" 

但是当我运行安装程序,日志仍然说“你好,我是你的32位模拟的自定义操作服务器,”和自定义操作不能正常运行。

具体而言,我试图运行64位版本的Powershell而不是32位版本。

+0

默认情况下,DTF ca被设置为任意CPU。本地钩子是32位的,但CA进程是64位。 – 2013-04-26 17:16:34

+0

我将它从任何CPU改为x64专门强制使用正确的sfxca版本。 – TheWhitness 2013-04-29 14:53:00

+0

我不知道为什么它很重要。 sfxca只是用来启动一切,并封送interop电话。我已经运行了64位代码,而不必在过去这样做。 – 2013-04-29 15:27:45

回答

6

如果您明确地将托管代码编译为64位,则DTF会将您的自定义操作正确加载到64位自定义操作服务器中。默认情况下,托管代码编译为“任何CPU”,这会导致您的自定义操作被加载到32位自定义操作服务器中。

希望有帮助!

+0

我接受了这个答案,即使真的这个问题是我自己的愚蠢 - 这将是大多数人在这个问题上磕磕绊绊的问题。谢谢! – TheWhitness 2013-05-08 15:26:03

+0

我编译了64位的WiX安装程序项目,它仍然运行32位的Action Server。你是怎么得到它加载64位? – codenamezero 2017-08-03 20:10:03