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