在 32 位和 64 位计算机上查找第三方 32 位产品

发布于 2024-10-30 19:58:43 字数 326 浏览 2 评论 0原文

我正在编写一个 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夏了南城 2024-11-06 19:58:43

嗯,根据 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文