WiX工具集:在升级时写入注册表项

时间:2015-09-03 09:31:50

标签: wix windows-installer

我有一个应用程序,需要知道它是否已升级。所以我想用安装程序编写一个注册表项,然后可以从应用程序中读取。我尝试通过将以下组件添加到安装程序来实现此目的:

<Component Id ="Registry_IsUpgraded">
  <Condition>Installed AND UPGRADINGPRODUCTCODE</Condition>
    <RegistryValue Id="RegKey_IsUpgraded" Root="HKLM"
                   Key="SOFTWARE\Microsoft\Office\Excel\AddIns\websmsExcelAddIn"
                   Name="IsUpgraded" Value="yes"
                   Type="string" />
</Component>

但是,升级期间不会写入注册表项。在msi日志中,我找到了这一行:

Component: Registry_IsUpgraded; Installed: Absent;   Request: Local;   Action: Null

我认为Action: Null表示不会安装该组件,因为升级期间安装的其他组件的ActionLocal

但为什么这是为什么我的注册表项没有写?是否有更好/更简单的方法告诉我的应用程序它已升级?

1 个答案:

答案 0 :(得分:1)

已安装且UPGRADINGPRODUCTCODE始终评估为false,因为在主要升级期间(由UPGRADINGPRODUCTCODE指示),新产品根据定义尚未安装。

我认为您的应用程序需要在每次升级后首次运行时执行某些操作,是吗?如果是这样,只需将ProductCode属性写入注册表值,然后在应用程序代码中检测到值已更改时触发事件。这将简化您的安装程序要求。

相关问题