开发人员创建了同一产品的3个安装程序并更改了UpgradeCode(是的,我知道,但确实如此)。
这些安装程序是提供给客户的,其中一些使用了这些版本。 现在我构建了新的安装程序,然后使用SuperOrca将记录添加到msi:使用不正确的升级代码卸载旧产品安装。
如何在WiX安装程序项目中执行此操作,每次构建msi后都不使用SuperOrca修补msi?
答案 0 :(得分:4)
许多人似乎认为升级只能升级一次安装并且更改升级代码有问题,但这些都不是必需的。正如您使用SuperOrca所知,MSI文件中的升级表可以根据需要升级任意数量的已安装产品。
所以你需要做的就是添加升级元素,命名UpgradeCode值和你需要的版本范围。如果有三个产品可能已安装,则添加三个升级元素,将它们全部命名。你最终会得到一个升级表(在MSI中查看),就像你用Orca添加它们一样。
答案 1 :(得分:1)
升级代码不应更改。在安装程序中,如果要发布其他主要版本,则可以更改产品代码,但升级代码应在整个生命周期内与产品相同。在Wix中的产品标记内添加以下标记,以便在安装新版本时自动卸载以前的版本 -
<Product Id="*" UpgradeCode="PUT-GUID-HERE" ... >
<Upgrade Id="PUT-GUID-HERE">
<UpgradeVersion OnlyDetect="no" Property="PREVIOUSFOUND"
Minimum="1.0.0.0" IncludeMinimum="yes"
Maximum="99.0.0.0" IncludeMaximum="no" />
</Upgrade>
<InstallExecuteSequence>
<RemoveExistingProducts After="InstallInitialize" />
</InstallExecuteSequence>
由于OnlyDetect设置为No,wix将在InstallInitialize阶段后自动卸载以前的版本。 Wix将检测您在上面给出的示例范围内的版本 - 最小1.0到最大-99.0