【发布时间】:2014-06-03 00:40:45
【问题描述】:
我有一个要升级到的产品。 现在我更新了 App 代码,而不是升级代码,让它作为升级工作。
到目前为止,我没有在 WIX xml 中使用 MajorUpgrade 标记。
以下配置卸载任何以前的配置并将较新的文件安装到目录中,但它只安装那些已更改版本号的文件。
<Property Id="PREVIOUSVERSIONSINSTALLED" Secure="yes" />
<Upgrade Id="$(var.SleakSoft_UpgradeCode)">
<UpgradeVersion Minimum="4.12.0" Maximum="$(var.SleakSoft_AppVersion)" Property="OLDERVERSIONBEINGUPGRADED" OnlyDetect="no" IncludeMinimum="yes" IncludeMaximum="no" />
<UpgradeVersion Minimum="$(var.SleakSoft_AppVersion)" IncludeMinimum="yes" OnlyDetect="yes" Language="!(loc.LANG)" Property="NEWPRODUCTFOUND" />
<UpgradeVersion Minimum="4.12.0" Maximum="5.0.0" OnlyDetect="no" Language="!(loc.LANG)" IncludeMaximum="yes" Property="UPGRADEFOUND" />
</Upgrade>
<CustomAction Id="PreventDowngrading" Error="Newer version of Sleak Talk is already installed." />
<InstallExecuteSequence>
<Custom Action="PreventDowngrading" After="FindRelatedProducts">NEWPRODUCTFOUND</Custom>
<RemoveExistingProducts After="InstallInitialize" />
</InstallExecuteSequence>
现在如何让它在删除现有产品后安装安装程序中的所有文件。
我已经尝试过 InstallExecure After="RemoveExistingProducts" 和 InstallExecuteAgain After="RemoveExistingProduct" 但没有成功。
【问题讨论】:
-
我不确定我是否遵循:您想进行重大升级但不想使用
MajorUpgrade?或者你想要其他类型的upgrade? -
@TomBlodget:我在使用 MajorUpdate 时没有问题,但由于我是 WIX 新手,所以我尝试了该 schedule="afterInstallInitialize" 的组合:这实际上卸载了当前安装的版本,但只是安装了较新的文件从安装程序。我与 MajorUpgrade 一起使用的另一个选项是在 InstallFinalize 之后”,但不会出现更多过度行为,它只是用更高版本替换了文件。在我的安装程序中,有一些文件具有相同的版本号,但由于它们包含一些错误,因此修复了文件大小发生了变化。
标签: installation wix uninstallation reinstall