自定义操作在32位安装上以64位运行

时间:2012-11-05 23:07:29

标签: wix

此应用程序是一个大型应用程序的插件。要完成安装,我们需要运行主应用程序提供的批处理脚本。批处理脚本错误表明某个注册表项不存在,但它存在于注册表的WOW6432部分中。似乎自定义操作以64位运行,尝试在没有WOW6432的情况下获取注册表。我无法访问或控制批处理文件,因此我无法更改它以检查注册表的两个部分。

如何确保自定义操作以32位运行?

运行批处理文件时,cmd进程以64位模式运行。

编辑:要检查它是否正在运行64 vs 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”。它似乎运行良好,但我做错了吗?

1 个答案:

答案 0 :(得分:0)

您应该明确指定命令行exe为32位。因此,不要像“yourScriptName.cmd”那样直接调用批处理,而应使用:

%windir%\SysWoW64\cmd.exe /c yourScriptName.cmd