【发布时间】:2013-05-07 12:12:57
【问题描述】:
我正在尝试将 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 位版本。
【问题讨论】:
-
DTF ca 默认设置为 Any CPU。本机钩子是 32 位的,但 CA 进程是 64 位的。
-
我将它从 Any CPU 更改为 x64 专门用于强制正确的 sfxca 版本。
-
我不知道这有什么关系。 sfxca 仅用于启动所有内容并编组互操作调用。我过去运行 64 位代码而不必这样做。
-
我也不确定发生了什么。我的研究给我的印象是我应该可以使用 64 位模拟服务器,但我无法让它工作。
-
我认为该钩子仍然确定托管部分是否以 64 位运行。不过,我确实发现了问题所在,这对我来说很愚蠢。因为我忘记更改路径,所以自定义操作被完全正确编译,但是 wix 项目正在抓取旧的自定义操作。将钩子更改为 x64 确实可以为我运行 x64 版本的 PowerShell。
标签: wix 64-bit windows-installer custom-action