我有一个最近被转换为.msm的.msi,并成为更大.msi的组件。
我有一个自定义操作,在降级时中止安装。
<Custom Action="AbortDowngrade" After="InstallChecks">INSTALLED_BUILDNO > INSTALLING_BUILDNO</Custom>
定义为:
<CustomAction Id="AbortDowngrade" Error="Downgrade not allowed"/>
自定义操作是类型19,导致整个.msi中止。
如何更新.msm,以便在不影响.msi的情况下优雅地失败?
谢谢!
答案 0 :(得分:0)
将msm合并并内置到MSI后,只有MSI,没有安装合并模块。合并模块只是与MSI一起安装的一堆组件。您不能让一些正在安装的组件失败。
所以很难给出一个直接的答案,因为你不能让一部分MSI失败。如果不需要自定义操作,则将其删除。它似乎适用于降级,因此它适用于MSI,并且在其中一个合并模块中具有MSI包限制有点不寻常。或者,如果仅在某些条件下应用,则将条件应用于自定义操作。
禁止安装组件集合的最佳方法是将它们放在一个功能中并对该功能有条件,如下所示:
How to use conditions in features in WiX?
否则,在该条件下对构建数字的引用意味着您可能认为如果已经安装了某些版本的文件,则不安装这些文件。如果是这样,这绝对不是通常的做法。文件版本确定是否要替换文件,因此如果安装较低版本的文件,则不会替换现有文件。