为什么WIX主要升级不会更新我的所有文件?

时间:2017-07-25 00:03:16

标签: visual-studio-2013 wix

我刚刚接手了一个复杂的Visual Studio / WiX项目(我从未使用过WiX),突然升级不再包含所有文件。我们不会对每个.dll进行版本控制,因此我们需要将每次升级作为主要升级。 (我知道这通常不是一个好主意,但这适用于只能通过USB驱动器上的脚本升级的设备)。我已阅读this文章并进行了以下更改:

  1. 我将产品ID从Guid更改为' *'在Product.wxs文件中
  2. 我将<MajorUpgrade Schedule="afterInstallFinalize" DowngradeErrorMessage="A newer version of [ProductName] is already installed."/>添加到Product.wxs文件中(我还尝试过Schedule = afterInstallExecute),但没有运气。
  3. 我将以下代码块添加到Product.wxs文件中(请注意,我必须将&lt;和&gt;字符替换为|才能显示此代码:

    <Upgrade Id='291EF866-D9B7-4103-B006-F11E50EEDC7B'> <UpgradeVersion 
    OnlyDetect='no' Property='PREVIOUSFOUND' Minimum='1.0.0' 
    IncludeMinimum='yes' Maximum='99.0.0' IncludeMaximum='no' />
    </Upgrade>
    
  4. 因此,当我开始这个过程时,一些.dll正在更新,而其他人则没有。现在大多数更新,但不是全部。以下是其中一个未更新的文件的日志示例行:

     MSI (s) (34:AC) [16:56:06:306]: Component: cmp9EE90E3731EB7F54B1D4B6D421BF1286; Installed: Absent;   Request: Local;   Action: Local
    

    这是引用该文件的第二行:

    MSI (s) (34:98) [16:56:08:583]: Component: cmp9EE90E3731EB7F54B1D4B6D421BF1286; Installed: Local;   Request: Absent;   Action: Null
    

    这就是一切。请帮忙!!

2 个答案:

答案 0 :(得分:0)

您需要在MajorUpgrade中将Schedule更改为afterInstallInitialize  元件。

 Schedule="afterInstallInitialize"

删除升级元素。

您可以查看this tutorial中的具体内容。

我建议您阅读Here中的“计划”属性。

答案 1 :(得分:0)

我终于得到了一个名为REINSTALLMODE的模糊属性,并将其设置为amus。感谢Hannes this发帖!!

以下是解决方案:

<Property Id="REINSTALLMODE" Value="amus" />

<Upgrade Id='291EF866-D9B7-4103-B006-F11E50EEDC7B'>
  <UpgradeVersion OnlyDetect='no' Property='PREVIOUSFOUND'
      Minimum='1.0.0' IncludeMinimum='yes'
      Maximum='99.0.0' IncludeMaximum='no' />
</Upgrade>