WIX升级方案

时间:2017-07-25 07:59:59

标签: wix installer

我有一个现有的WIX安装程序文件,我试图弄明白。在此文件中,我看到定义了两个自定义操作:

<Custom Action="CreateBackup"     Before="InstallInitialize">            
    <![CDATA[Installed]]>
</Custom>

<Custom Action="RestoreBackup"    After= "InstallFinalize">
    <![CDATA[NOT Installed]]>
</Custom>

CreateBackup函数从远程位置复制一些文件(与此安装程序没有直接关系)。还原将这些文件放回到同一位置。

现在在升级方案中,我看到以下日志记录顺序。我已经把'#34;已安装&#34;括号内:

  • 跳过CreateBackup(已安装== false)
  • InstallInit
  • CreateBackup成功(Installed == true)
  • InstallInit
  • InstallFinalize
  • 跳过RestoreBackup(已安装== true)
  • InstallFinalize
  • RestoreBackup成功(已安装== false)

我对此有几个问题:

  • 我知道此脚本中有卸载和安装。并基于&#34;已安装&#34;的价值我得出结论,安装是先完成的。这是对的吗?
  • 我看到InstallInit在第一个InstallFinalize之前被调用了两次。这是什么意思?卸载开始时安装是否仍然繁忙?
  • Installed的第一个值是false,所以我猜它是相对于新版本的?但卸载完成后它又如何变得虚假?它与旧版本有关吗?

我正在使用MajorUpgrade元素。

希望有人能清除这一点。

1 个答案:

答案 0 :(得分:1)

我假设您使用WiX MajorUpgrade元素进行升级,因此您需要的条件应该是这样的:

进行升级时,升级时会设置WIX_UPGRADE_DETECTED属性:

http://wixtoolset.org/documentation/manual/v3/xsd/wix/majorupgrade.html

因此,当您要创建备份时,请使用该条件,假设您要在升级时对现有文件(来自旧产品)进行备份。

从您的帖子中确切地说您何时想要进行还原,但如果在升级之后,则使用相同的WIX_UPGRADE_DETECTED属性。

基于Installed属性的那些条件似乎没有多大意义,因为如果安装了当前的MSI的ProductCode,则设置该属性。在该阶段的升级中,它将始终未设置。

这篇文章有关于属性和安装操作的更多信息:

How to add a WiX custom action that happens only on uninstall (via MSI)?