12
使用WiX 3.7和.NET 4.0。
從命令行運行WiX bootstrapper EXE時,如何設置燒寫變量?WiX Bootstrapper:如何從命令行設置刻錄變量?
使用WiX 3.7和.NET 4.0。
從命令行運行WiX bootstrapper EXE時,如何設置燒寫變量?WiX Bootstrapper:如何從命令行設置刻錄變量?
首先,您希望設置的刻錄變量需要設置爲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文件的一個例子satifies所有的上述條件:
<?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>
這適用於[WixStdBA](https://github.com/wixtoolset/wix3/blob/4786b1306b614b83cb96ad1b07f7597992f37126/src/ext/BalExtension/wixstdba/WixStandardBootstrapperApplication.cpp),但不適用於託管引導程序應用程序。所以奇怪的是,從cmdline解析和重寫變量的邏輯不在刻錄核心中。 – stukselbax