【发布时间】:2021-03-25 06:48:01
【问题描述】:
我有一个带有如下组件的 Wix Toolset 项目,其中 MYLANGUAGE 是可以在安装产品时设置的公共属性:
<Component Id='language_reg' Guid='*' Permanent='yes'>
<Condition>MYLANGUAGE</Condition>
<RegistryValue Type='string' Root='HKLM' Key='Software\MyCompany\MyProduct' Name='language'
Value='[MYLANGUAGE]' KeyPath='yes' />
</Component>
现在我正在将这个软件包从 32 位升级到 64 位。由于 WOW64,我的软件现有 32 位版本的上述密钥存储在 HKLM\Software\WOW6432Node\MyCompany\MyProduct 下。
升级到新的 64 位版本的软件包后,我希望在 HKLM\Software\MyCompany\MyProduct 键中设置值。该值应设置如下:
- 如果安装时设置了公共属性 MYLANGUAGE,则该属性的值应存储在 HKLM\Software\MyCompany\MyProduct 语言中
- 如果未设置公共属性 MYLANGUAGE 并且 HKLM\Software\MyCompany\MyProduct 键不存在并且 HKLM\Software\WOW6432Node\MyCompany\MyProduct 语言值已设置,那么我想要该值从 HKLM\Software\WOW6432Node\MyCompany\MyProduct 语言复制到 HKLM\Software\MyCompany\MyProduct 语言
如何使用 WIX 工具集做到这一点?
【问题讨论】:
-
就在我的脑海中,您的 WiX 代码看起来是正确的。您是否在不涉及升级的独立 MSI 中尝试过此操作?我怀疑的一件事是组件本身存在升级问题。您没有说您是进行次要升级还是主要升级,但在次要升级中需要遵循某些组件规则。
标签: windows installation wix wix3