代码之家  ›  专栏  ›  技术社区  ›  kjv

wix安装程序-更新场景自定义ui

  •  3
  • kjv  · 技术社区  · 16 年前

    对于我的应用程序,我用wix开发了一个.msi。对于更新场景,我要执行以下操作:

    • 如果安装的版本从未超过更新版本,则显示错误

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

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

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

    1 回复  |  直到 16 年前
        1
  •  1
  •   Charles Gargent    16 年前

    使用Upgrade属性。

    假设

    <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>
    

    第一个升级版本查找当前版本之前的所有版本

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

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

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

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

    显示的自定义操作要么自动删除旧版本,要么警告用户已安装新版本,但如果要提示用户,则可以显示自定义用户界面,而不是运行cas。

    就我个人而言,我只使用前两个升级版本行。如果找到旧的,则执行自动升级;如果有新的,则向用户显示错误;如果安装了同一个,则向用户显示错误(默认情况下不需要第三行),但这并不能提供所需的用户界面,因此如上所述尝试用用户界面替换这些cas。