WIX安装程序工具集-SQL Server和IIS Express安装

时间:2020-04-26 16:21:47

标签: c# wix iis-express sql-server-express

我有带有一些自定义UI屏幕的WIX安装程序,其中有一个带有两个单选按钮的自定义UI屏幕。我只想根据选择的单选按钮安装SQL Server Express和IIS Express。我如何实现此功能。 我在项目中使用WIX 3.11.2和Visual Studio 2019。 任何人都可以提供参考链接或代码片段,这将帮助我进一步发展,因为我是WIX安装程序的新手。

1 个答案:

答案 0 :(得分:1)

您可以使用InstallCondition尝试

您的bundle.wxs将具有类似的内容

   <?xml version="1.0" encoding="UTF-8"?>
    <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
    xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">
      <Bundle Name="YourProductName" Version="1.0.0.0" Manufacturer="" UpgradeCode="aa89733d-62f6-44e9-80c7-04a69cb7c077">
        <Variable Name="InstallIISEXPRESS" Value="0" bal:Overridable="yes" Type="string" />
        <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
        <Chain>
          <!-- TODO: Define the list of chained packages. -->
          <!-- <MsiPackage SourceFile="path\to\your.msi" /> -->
          <PackageGroupRef Id ='DatabaseGrp'/>
        </Chain>
      </Bundle>
      <Fragment>
        <PackageGroup Id ='DatabaseGrp'>
          <MsiPackage Id="SQLServerExpress_x86_msi"
                      Cache="yes"
                      InstallCondition= "NOT(InstallIISEXPRESS = 1)"
                      Visible ="yes"
                      Permanent="yes"
                      SourceFile="Path\To\Your\SQLServerExpressMSI">
            <MsiProperty Name="IACCEPTQLServerExpressLICENSETERMS"
                         Value="YES"/>
          </MsiPackage>

          <MsiPackage Id="IISExpress_x86_msi"
                      Cache="yes"
                      Visible ="yes"
                      InstallCondition= "InstallIISEXPRESS = 1"
                      Permanent="yes"
                      SourceFile="Path\To\Your\IISExpressMSI">
            <MsiProperty Name="IACCEPTIISExpressLICENSETERMS"
                         Value="YES"/>
          </MsiPackage>
        </PackageGroup>
      </Fragment>
    </Wix>

您需要在捆绑项目中添加对BalExtension的引用References required to your bundle project

您需要从Bootstrapper(Custom UI)项目中设置变量InstallIISExpress的值,该值将确定要安装哪个数据库MSI。 您可以像这样在Bootstrapper项目中设置该值

Bootstrapper.Engine.StringVariables["InstallIISExpress"] = "0";
// If you want to install SQLEXPRESSSERVER then set it to "0"
// If you want to install IISEXPRESS then set it to "1"
// You can decide this value from radio button selected by user

InstallCondition指示是否应该安装软件包。如果条件评估为真,则可以安装该软件包。如果条件评估为false,则不应安装该软件包。如果该软件包存在并且条件评估为false,则该软件包将被卸载。