【问题标题】:WiX Custom Actions in 64 bit64 位的 WiX 自定义操作
【发布时间】: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


【解决方案1】:

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

希望有帮助!

【讨论】:

  • 我接受了这个作为答案,尽管真正的问题是我自己的愚蠢——对于大多数在这个问题上绊倒的人来说,这将是问题。谢谢!
  • 我编译了 64 位的 WiX 安装程序项目,它仍然运行 32 位的 Action Server。你是怎么让它加载64位的??
  • 我想问同样的问题@codenamezero问
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多