【问题标题】:What is a compressed GUID and why is it used?什么是压缩 GUID,为什么使用它?
【发布时间】:2018-11-16 07:08:10
【问题描述】:

我知道在 Windows 中,Windows Installer 使用 GUID 来检查注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ 下已安装的产品,而其他与产品相关的信息使用压缩的 GUID 存储在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\ 中。

然而,谷歌搜索以找出压缩的 GUID 实际是什么,以及为什么这两种形式都用于在注册表数据库中保存产品特定数据,但仅揭示了从一种形式转换为另一种形式的算法。

显然,压缩的 GUID 是通过仅以特定方式更改字符顺序来计算的,这让我更加困惑为什么这是压缩形式以及为什么要以这种方式使用它。

此外,一些来源似乎将 GUID 称为软件产品的产品代码,而其他来源则专门使用术语产品代码作为压缩 GUID 的同义词。

我对 Windows 及其安装程序的内部工作原理了解不多,但希望有人能用我找不到的信息启发我。我为我平庸的英语提前道歉。

【问题讨论】:

    标签: windows windows-installer


    【解决方案1】:

    据报道,打包的 guid 用于节省注册表空间。它用于组件 ID,因此一旦您开始在系统上获得一百万个组件,我假设他们担心额外的空间使用。它也有可能被用来防止人们在注册表中搜索 Windows Installer 项目,而不是使用 API。这是一个未记录的实现细节,如果太多人养成使用注册表而不是使用 API 的习惯,那么如果该实现发生变化,就会出现问题。因此,请将其视为有趣的信息,而不是在应用程序中使用的东西。

    Darwin Descriptors 是不同的——它们只是产品代码、组件 ID 和功能名称的编码。它们出现在各种数据组合对于加载 COM 服务器、启动程序等有用的地方。同样,它没有记录,但如果你想解开它们,你可以在 msi.dll 上的 LoadLibrary 并找到并使用正确的参数调用 MsiDecomposeDescriptorW。

    【讨论】:

      【解决方案2】:

      不确定您在做什么,或者为什么这对您的方案来说是个问题。但是,您提到的 GUID(删除了大括号和破折号的重新排列的 GUID)实际上称为Packed GUIDs。然后还有 Compressed GUIDs,它只有 23 个字符长,主要用于创建 Darwin descriptors - 它们是产品代码 GUID、功能名称和组件代码 GUID 的组合。它们用于 MSI 的广告功能。这是根据 Bob Baker 的书“InstallShield Developer 和 Windows Installer 设置入门”。

      据我所知,打包的 GUID 显然用于使注册表搜索更高效。我不熟悉所涉及的确切技术细节。也许 WiX 的 Bob 或 Rob 可以详细说明。

      我要跑了,不是真的回答,以后再看。 请详细说明您的问题,详细说明问题究竟是什么。总而言之,似乎集体 cmets 认为这个 GUID 概念是由于注册表空间节省、搜索效率和混淆。

      我的建议(如果我理解正确的话):不要尝试直接从注册表中读取打包或压缩的 GUID - 而是通过 the MSI API (COM / Win32) - 其中应该具备使用 MSI 执行几乎所有操作所需的功能。


      一些链接

      MSI API 链接(非常相似的链接):

      【讨论】:

      • MSI 在 Windows 95 上受支持,因此减少使用的注册表空间量是有价值的,即使每个条目只有几个字节。
      • 这实际上已经很好地回答了这个问题。我遇到的确切问题是我需要找到打包的 GUID 下列出的注册表项以进行自动化测试,不过我会看看 MSI API。
      • 如果您让我们知道您需要检索哪些信息,我们可能有一些示例代码的链接。我将在上面添加几个链接。
      猜你喜欢
      • 2013-05-17
      • 1970-01-01
      • 1970-01-01
      • 2010-10-29
      • 2013-10-28
      • 2020-10-09
      • 1970-01-01
      • 2011-10-31
      • 2015-09-01
      相关资源
      最近更新 更多