web-dev-qa-db-ja.com

WiXブートストラップ:コマンドラインから書き込み変数を設定するにはどうすればよいですか?

WiX3.7および.NET4.0を使用します。

コマンドラインからWiXブートストラップEXEを実行するときに、書き込み変数を設定するにはどうすればよいですか?

17
bsara

まず、設定する書き込み変数をOverridableとして設定する必要があります。これを行うには、WXSに次の名前空間を含める必要があります:xmlns:bal="http://schemas.Microsoft.com/wix/BalExtension"そして、私のようなVisual Studioを使用している場合は、プロジェクト参照にWixBalExtension.dllを含める必要があります。次に、コマンドラインで設定するすべての書き込み変数に次の属性を追加する必要があります:bal:Overridable="yes"

これで、次の方法でコマンドラインから変数を設定できます。

BootstrapperSetup.exe /i /passive MyBurnVariable1=1 MyBurnVariable2=2


以下は、上記のすべての条件を満たす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="MyProduct" Version="1.0.0" Manufacturer="MyManufacturer" UpgradeCode="PUT-UPGRADE-CODE-HERE">

    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkLicense">
      <bal:WixStandardBootstrapperApplication LicenseUrl="MyLicense.htm" ThemeFile="MyThemeFile.xml" LocalizationFile="MyLocFile.wxl" />
    </BootstrapperApplicationRef>

    <Variable Name="MyBurnVariable1" bal:Overridable="yes" Type="numeric" Value="0" />
    <Variable Name="MyBurnVariable2" bal:Overridable="yes" Type="numeric" Value="0" />

    <Chain>
      <MsiPackage Id="MyFirstMsiPackage"
                  SourceFile="first.msi"
                  InstallCondition="MyBurnVariable1 = 1" />

      <MsiPackage Id="MySecondMsiPackage"
                  SourceFile="second.msi">
        <MsiProperty Name="MY_PROPERTY" Value="[MyBurnVariable2]" />
      </MsiPackage>
    </Chain>
  </Bundle>
</Wix> 
34
bsara