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

标签 user-interface wix windows-installer

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

  • (如果安装的版本永远不会比更新版本)显示错误
  • (如果安装的版本早于更新版本)显示带有文本Update的按钮
  • (如果安装的版本与更新版本相同)显示带有文本Repair的按钮

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

    最佳答案

    使用升级属性。

    假设

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

    等等

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

    我个人只使用前两个upgradeversion行。如果找到较旧的版本,则会执行自动升级;如果有较新的版本,则会向用户显示错误;如果安装了相同版本,则会向用户显示错误(默认情况下,它不需要第三行) ,但这并不能为您提供所需的UI,因此如上所述,请尝试用您的UI替换这些CA。

    关于user-interface - WiX安装程序-更新方案自定义UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2585579/

    相关文章:

    javascript - 在 three.js 示例中使用 dat.GUI 时出现问题

    python - 主循环和带有线程的文本

    windows - wix 3.0 意外的子元素 'Website'

    c++ - 在没有 IDE 的情况下用 C++ 手工编写 Windows GUI

    JavaFX GridPane 对象对齐

    Wix TextStyle 到文本的一部分

    windows - 使用 Visual Studio 集成的 WiX 托管自定义操作中没有调试信息

    python - 如何将python+pygame程序打包为可执行文件?

    installation - 如何使用自定义操作在 WiX 中运行脚本 - 最简单的示例?

    wix - 使用 Wix 安装后删除目录和文件