Как изменить текст кнопки на «Обновить» в проекте начальной загрузки WIX (Windows installer xml), когда пакет запущен в процессе обновления?

#user-interface #wix #bootstrapper

#пользовательский интерфейс #wix #bootstrapper

Вопрос:

Я создаю установщик языкового пакета с помощью WIX. Я почти закончил, кроме одного. Когда более новая версия установщика запускается после установки старой версии того же установщика, кнопка установки по-прежнему показывает «Установить», но я ожидаю, что она покажет «Обновить», когда запущен новый установщик. После установки нового установщика была установлена новая версия, а старая версия была удалена. Это означает, что аспект функции обновления выполнен. Но я надеюсь, что пользовательский интерфейс, особенно текст кнопки, может быть изменен соответствующим образом.

Я использую проект начальной загрузки для объединения файла языкового пакета msi, который создается из проекта установки wix, и использую стандартный пользовательский интерфейс «WixStandardBootstrapperApplication», связанный с XML-файлом определения пользовательского интерфейса. Я попытался добавить страницу «Обновить» в 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="......LanguageSetupV3binDebugen-usLanguagePackage.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>
 

Я хочу знать, как определить процесс обновления в проекте начальной загрузки и как изменить текст кнопки в соответствии со значением свойства. Или как я могу найти свойство или переменную, чтобы указать разницу между процессом установки и обновления. Любые ссылки, учебные пособия или предложения, связанные с этим, были бы признательны.

Комментарии:

1. Какая версия у вас есть внутри Bundle элемента? Попробуйте увеличить его в новом установщике (имейте в виду, что MSI использует только 3 первые цифры в версии)

2. Я использую версию проекта начальной загрузки V3, а 1.26.3.1 — мою старую версию установщика. Новейшая версия установщика 1.26.4.3 в элементе пакета. Да, я увеличил 3-значный номер версии пакета MSI и сохранил тот же номер версии в проекте начальной загрузки. Но при запуске моего нового установщика в пользовательском интерфейсе нет никаких изменений. Кнопка по-прежнему отображает «Установить».

Ответ №1:

В WixStdBA не определена отдельная кнопка обновления. Кажется, что единственной кнопкой { WIXSTDBA_CONTROL_INSTALL_BUTTON, L»InstallButton» } для начала установки. В исходном коде WixStdBA я не нашел кнопки с именем «…ОБНОВЛЕНИЕ …» Для обновления пакета новый пакет должен иметь более высокий номер версии, как уже обсуждалось выше, и код обновления пакета должен быть постоянным. Мне кажется, что может потребоваться взять исходный код WixStdBA и изменить его таким образом, чтобы он обнаруживал наличие любых предыдущих установок с тем же идентификатором GUID пакета, и изменить код, чтобы он отображал другой текст кнопки в зависимости от состояния установки.

Комментарии:

1. Я вполне согласен с вами. Но теперь я пытаюсь найти способ расширить пользовательское приложение начальной загрузки, которое могло бы определять статус установки и изменять текст кнопки. Я не знаю, смогу ли я добиться успеха, я просто пытаюсь