как дать дополнительную установку для нескольких пакетов MSI в одном установщике WiX? - PullRequest
0 голосов
/ 31 января 2020

У меня есть несколько пакетов, которые я хочу установить, используя один установщик. Два из них - пакеты MSI, два других - исполняемые файлы. Я использую WiX, чтобы сделать единый установщик для установки всех четырех пакетов, и хочу дать пользователю возможность выбрать, какой (или несколько) он хочет установить.

Здесь один пакет MSI предназначен для разрабатываемого мною приложения WPF Desktop, остальные 3 пакета представляют собой дополнительные функции, которые я хочу предоставить для выбора / отмены выбора.

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

Также я использую среду разработки Visual Studio 2019 для разработки.

1 Ответ

0 голосов
/ 31 января 2020

Предполагая, что вы используете стандартное приложение начальной загрузки, вам нужно принести копию вашего любимого Theme.wxl:

<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkLicense" >
  <bal:WixStandardBootstrapperApplication LicenseFile="Resources\EULA.rtf" LogoFile="Resources\Icon.png" LicenseUrl="http://www.google.com" LocalizationFile="Resources\HyperlinkTheme.wxl" ThemeFile="Resources\HyperlinkTheme.xml" SuppressOptionsUI="yes" />
</BootstrapperApplicationRef>

Затем в Thex wxs добавить кнопку:

 <Text X="11" Y="175" Width="130" Height="20" FontId="3" Visible="yes" DisablePrefix="yes">Install Something</Text>
 <Checkbox Name="INSTALLSOMETHING"  X="140" Y="175" Width="-11" Height="20" TabStop="yes" FontId="3" Visible="yes"></Checkbox>

Затем в вашем bundle.wxs объявите переменную, чтобы ее можно было передать в качестве аргумента для установки без вывода сообщений:

 <Variable Name="INSTALLSOMETHING" bal:Overridable="yes" Type="string" Value="" />

И, наконец, используйте ее значение для управления установкой чего-либо.

   <ExePackage Id="Something" SourceFile="Something.exe" InstallCondition="(INSTALLSOMETHING=&quot;1&quot;) or (INSTALLSOMETHING=&quot;True&quot;)" />

Сполосните и повторите еще 3 раза.

...