在 32 位和 64 位计算机上查找第三方 32 位产品
我正在编写一个 MSI 文件,该文件将附加组件安装到我使用 RegLocator 表通过其 HKLM\Software\...
键找到的现有应用程序;这在 32 位 Windows 上运行得很好。
然而,在 64 位 Windows 上,可以在 HKLM\Software\WOW6432Node\...
下找到该密钥;这显然是正确的,因为另一个应用程序是 32 位应用程序,但是它使 RegLocator 出错。
有没有办法检查原始密钥路径和重写的密钥路径,并使用第一个存在的密钥路径(如果两个密钥都不存在,则根本不应该安装该组件)?
I'm authoring an MSI file that installs an add-on to an existing application that I find via its HKLM\Software\...
key using the RegLocator table; this works quite well on 32 bit Windows.
On 64 bit Windows, however, the key can be found under HKLM\Software\WOW6432Node\...
; this is obviously correct as the other application is a 32 bit application, however it makes the RegLocator stumble.
Is there a way to check both the original and the rewritten key path, and use the first one that exists (if neither key exists, the component should not be installed at all)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
嗯,根据 RegLocator 表 的文档,如果您不这样做设置Type列的msidbLocatorType64bit,它将在注册表的32位部分中搜索。否则它将搜索 64 位部分。因此,如果您的第三方始终是 32 位(至少这是我从您的问题中了解到的),您可以不设置该位,它总是会查看 32 位配置单元。
Hmm, according to the documentation of RegLocator table, if you don't set the msidbLocatorType64bit of the Type column, it will search in the 32-bit portion of the registry. Otherwise it'll search the 64-bit part. So, if your third-party is always 32-bit (at least that's what I understand from your question), you can leave that bit unset and it'll always look into 32-bit hive.