【问题标题】:how to give optional install for multiple msi packages in single WiX installer?如何在单个 WiX 安装程序中为多个 msi 包提供可选安装?
【发布时间】:2020-01-31 12:14:16
【问题描述】:

我有多个要使用单个安装程序安装的软件包。其中两个是 MSI 包,另外两个是 exe 文件。我正在使用 WiX 制作单个安装程序来安装所有四个包,并希望让用户选择他们想要安装的一个(或多个)。

这里,一个 MSI 包用于我正在开发的 WPF 桌面应用程序,其他 3 个包是我想提供选择/取消选择选项的附加功能。

所以,到目前为止,我可以使用 WiX BootStrapper 安装所有四个。但我找不到在安装过程中如何为用户提供选择选项。

我也在使用 Visual Studio 2019 IDE 进行开发。

【问题讨论】:

    标签: visual-studio wix windows-installer desktop-application wix3.11


    【解决方案1】:

    假设您使用标准引导程序应用程序,您需要引入您最喜欢的 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>
    

    然后在 Theme 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 次。

    【讨论】:

    • 您知道如何在 c# 应用程序中使用 BootstrapperApplication 执行此操作吗?用 bootdtrapper 变量绑定复选框?
    猜你喜欢
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多