在我们的产品中我们使用Product Id="*"
在 Wix 中告诉它为每个新版本生成新的产品代码。现在,我们需要在安装期间将正在安装的 MSI 的产品代码记录到我们的注册表项之一中。我们可以通过循环遍历“卸载”注册表项中的条目来查找产品名称和版本来推断运行时的产品代码,但在安装时直接记录此信息会更干净。
Wix 有没有办法告诉我什么ProductCode
它已经生成,以便我可以将它作为变量添加到RegistryValue
维克斯元素?
我猜没有,所以我尝试使用<?define?>
将变量设置为所有问号"????????-????-????-????-????????????"
并在Product
元素以及RegistryValue
元素。这适用于Product
element 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(使用前将#替换为@)