首页 > 解决方案 > 当包在升级过程中运行时,如何在 WIX(windows 安装程序 xml)引导程序项目中将按钮文本更改为“升级”?

问题描述

我正在使用 WIX 创建一个语言包安装程序。除了一件事,我几乎完成了。在安装了同一安装程序的旧版本后运行较新版本的安装程序时,安装按钮仍显示“安装”,但我希望在运行较新的安装程序时它会显示“升级”。安装新安装程序后,新版本已安装,旧版本已删除。这意味着升级功能方面已经完成。但我希望 UI 尤其是按钮文本可以相应更改。

我正在使用引导程序项目来捆绑从 wix 设置项目构建的 msi 语言包文件,并使用链接到 UI 定义 xml 文件的标准 UI“WixStandardBootstrapperApplication”。我试图在 UI 定义 xml 文件中添加一个“升级”页面,它对我不起作用,我不知道如何在引导程序项目中检测升级过程。这是我的代码。

<BootstrapperApplicationRef 
 Id="WixStandardBootstrapperApplication.HyperlinkLicense">
  <bal:WixStandardBootstrapperApplication
      LicenseUrl=""
      ThemeFile="HyperlinkTheme.xml"
      LocalizationFile="HyperlinkTheme.wxl"
      LogoFile="Logo128.jpg"
      SuppressOptionsUI="yes" />
</BootstrapperApplicationRef>

<Chain>
  <MsiPackage Id="InstallationMSI"
              SourceFile="..\..\..\LanguageSetupV3\bin\Debug\en-us\LanguagePackage.msi"
              EnableFeatureSelection="yes"
              DisplayInternalUI="no"
              Compressed="default"
              Description="[UpgradeByUninstallInstall][IsTypicalInstall]"
              />
</Chain>

<Page Name="Install">
  <Text X="11" Y="121" Width="-11" Height="51" FontId="3" DisablePrefix="yes">#(loc.InstallMessage)</Text>
    <!--<Hypertext Name="EulaHyperlink" X="11" Y="121" Width="-11" Height="51" TabStop="yes" FontId="3" HideWhenDisabled="yes">#(loc.InstallLicenseLinkText)</Hypertext>
    <Checkbox Name="EulaAcceptCheckbox" X="-11" Y="-41" Width="260" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="yes">#(loc.InstallAcceptCheckbox)</Checkbox> -->
    <Button Name="OptionsButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.InstallOptionsButton)</Button>
    <Button Name="InstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.InstallInstallButton)</Button>
    <Button Name="WelcomeCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.InstallCancelButton)</Button>
</Page>

我想知道如何检测引导程序项目中的升级过程以及如何根据属性值更改按钮文本。或者我怎样才能找到一个属性或变量来指示安装和升级过程之间的区别。任何与此相关的链接、教程或建议将不胜感激。

标签: user-interfacewixbootstrapper

解决方案


在 WixStdBA 中没有定义单独的升级按钮。唯一的按钮似乎是 { WIXSTDBA_CONTROL_INSTALL_BUTTON, L"InstallButton" } 开始安装。在 WixStdBA 源代码中,我没有找到名为“...UPGRADE...”的按钮。对于升级包,新包需要具有更高的版本号,如上所述,并且包升级代码需要保持不变。在我看来,可能有必要获取 WixStdBA 源代码并对其进行修改,以检测是否存在具有相同捆绑 GUID 的任何先前安装,并​​修改代码以根据安装显示不同的按钮文本地位。


推荐阅读