WiX安装程序 - 更新方案自定义UI

时间:2010-04-06 14:29:34

标签: user-interface wix windows-installer

对于我的应用程序,我有一个用WiX开发的.msi。对于更新方案,我想执行以下操作:

  • 如果安装的版本不是更新版本,则显示错误

  • 如果安装的版本早于更新版本,则显示带有文字Update的按钮

  • 如果安装的版本与更新版本相同,则显示带有文字Repair的按钮

我已经找到了如何定义自定义UI对话框,但是如果我创建一个包含所有这些控件的对话框(错误标签,更新/修复按钮),我如何根据情况显示适当的对话框。

1 个答案:

答案 0 :(得分:1)

使用升级属性。

假设

<Product Version="1.0.0.0" />

<Upgrade Id="GUID">
  <UpgradeVersion OnlyDetect="no" Property="OLDERFOUND" Maximum="1.0.0.0" IncludeMaximum="no" />
  <UpgradeVersion OnlyDetect='yes' Property='NEWERFOUND' Minimum="1.0.0.0" IncludeMinimum='no' />
  <UpgradeVersion OnlyDetect='yes' Property='SAMEFOUND' Minimum="1.0.0.0" Maximum='1.0.0.0' />
</Upgrade>

第一个upgradeversion找到所有版本直到当前版本

第二行找到当前版本之上的所有版本

第三行查找与当前版本相同的已安装版本

然后使用像这样的自定义操作

<CustomAction Id='NewerFound' Error='A later version of [ProductName] is already installed' />
<InstallExecuteSequence>
    <Custom Action='NewerFound' After='FindRelatedProducts'>NEWERFOUND</Custom>
    <RemoveExistingProducts After="InstallInitialize" />
</InstallExecuteSequence>

显示的自定义操作会自动删除旧版本,或者警告用户已安装较新版本,但如果要提示用户,则可以显示自定义UI而不是运行CA.

我个人只使用前两个upgradeversion行。如果找到较旧的,则执行自动升级,如果有较新的则显示用户错误,如果安装了相同的错误,则会向用户显示错误(默认情况下它不需要第三行) ,但是这并没有像你想要的那样为你提供UI,所以正如我上面所说,尝试用你的UI替换这些CA.