获取生成的 ProductCode 作为 Wix 中的变量

2024-04-14

在我们的产品中我们使用Product Id="*"在 Wix 中告诉它为每个新版本生成新的产品代码。现在,我们需要在安装期间将正在安装的 MSI 的产品代码记录到我们的注册表项之一中。我们可以通过循环遍历“卸载”注册表项中的条目来查找产品名称和版本来推断运行时的产品代码,但在安装时直接记录此信息会更干净。

Wix 有没有办法告诉我什么ProductCode它已经生成,以便我可以将它作为变量添加到RegistryValue维克斯元素?

我猜没有,所以我尝试使用<?define?>将变量设置为所有问号"????????-????-????-????-????????????"并在Product元素以及RegistryValue元素。这适用于Productelement ok,它继续生成一个新的GUID,但是在RegistryValue该变量在编译时不会扩展,这意味着注册表项只是添加了所有问号。

有没有纯粹的Wix方式来实现我想要的?我可以生成ProductCode在 Wix 之外并让 Wix 元素使用它作为环境变量,但这会增加构建过程的额外复杂性 - 其他可能会破坏的东西。如果我能纯粹用 Wix 来做这件事,我会很高兴。


产品代码始终可作为属性使用,无论您在产品代码中输入什么内容@ProductCode。因此,以下内容应该适合您的情况:

<RegistryKey Root="HKLM" Key="My Product">
   <RegistryValue Name="TheProductCode" Type="string" Value="[ProductCode]" KeyPath="yes" />
</RegistryKey>

此外,它不仅可以放在注册表值中,还可以放在注册表项名称中:

<RegistryKey Root="HKLM" Key="$(var.RegistryRoot)\[ProductCode]">
   ...
</RegistryKey>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取生成的 ProductCode 作为 Wix 中的变量 的相关文章

随机推荐