这个应用程序是一个更大的应用程序的插件。要完成我们的安装,我们需要运行主应用程序提供的批处理脚本。批处理脚本错误说某个注册表项不存在,但它存在于注册表的 WOW6432 部分中。自定义操作似乎以 64 位运行,试图在没有 WOW6432 的情况下获取注册表。我无法访问或控制批处理文件,因此无法更改它来检查注册表的两个部分。
如何确保自定义操作以 32 位运行?
运行批处理文件时,cmd 进程以 64 位模式运行。
编辑:为了检查它是否运行 64 和 32,我创建了一个单独的批处理脚本,用于检查在 HKLM/Software/SomeKey 中查找注册表项。该密钥实际上位于 HKLM/Software/Wow6432/SomeKey。使用 %windir%\SysWow64\cmd.exe 手动运行它(任务管理器将此进程标记为 *32)工作正常。使用常规 cmd.exe 运行它找不到注册表项。将此相同的批处理文件作为自定义操作放入 wix 会导致非 *32 cmd 打开并且 regkey 搜索失败。
我在 Wix 中设置了这个批次,如下所示:
<CustomAction Id="batchCA" Property="BATCHFILE" ExeCommand="" Execute="deferred" />
其中 BATCHFILE 是设置批处理文件路径的属性。即“C:\temp\batch.cmd”。它似乎运行良好,但我做错了吗?