从 WIX 安装程序的程序集版本创建种子 GUID

Seed GUID creation from assembly version for WIX installer

有什么方法可以根据 WIX .wxs 项目文件中的字符串生成 GUID?

<Product Id="Seeded GUID from $(var.MajorVersion)$(var.MinorVersion)" 
       Name="PCMTec" 
       Language="1033" 
       Version="$(var.BuildVersion)" 
       Manufacturer="weeooowwwww" 
       UpgradeCode="This GUID never changes">
</Product>

目标是当我更改我的程序 major/minor 版本(例如 major.minor.built.revision)时,它会创建一个新的 GUID,但是如果只有 built/revision 数字,它不会。

我可以手动执行此操作,但我应该可以自动执行此操作。

编辑:如果我这样修改 GUID 有什么问题吗?

“9AAADB83-ACF1-4DB8-BE8B-69C8061A$(var.GUIDInsert)”

在版本 0.35 的情况下,GUIDInsert 等于“0035”。最后 4 个十六进制数字是节点 ID 的一部分(例如 GUID 的 random/unique 部分)这仍然符合 GUID 应该是什么吗?

例如在末尾附加版本号 9AAADB83-ACF1-4DB8-BE8B-69C8061A0035

这样做本质上没有错,但一旦你必须从 9999 滚动到 0000,它最终会失败。当然你可能永远不会达到这么多版本,但仍然需要考虑。当然,您现在可以将其更改为 5 位数。

但我想知道您最初为什么要这样做。甚至不需要这样做。此 GUID 应该表示 "Product"。如果您使用不同的二进制文件(来自不同的 build/revision),那么生成的 msi 是否真的与早期构建的相同?

您是否正在尝试解决由 Product Id="*" 使用自动生成的 GUID 引起的问题?