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

"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 位版本。

最佳答案

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

希望有帮助!

关于64 位 WiX 自定义操作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16240786/

10-11 22:41