2013-02-07 4 views

답변

31

우선, 설정할 굽기 변수는 Overridable으로 설정해야합니다. 이렇게하려면 WXS에 따라 가기 네임 스페이스를 포함해야합니다 : xmlns:bal="http://schemas.microsoft.com/wix/BalExtension" 그리고 나 같은 비주얼 스튜디오를 사용하는 경우 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> 
+2

이것은 [WixStdBA] (https://github.com/wixtoolset/wix3/blob/4786b1306b614b83cb96ad1b07f7597992f37126/src/ext/BalExtension/wixstdba/WixStandardBootstrapperApplication.cpp)에 해당하지만 관리되는 부트 스트 래퍼 응용 프로그램에는 해당되지 않습니다. 따라서 cmdline의 변수를 구문 분석하고 재정의하는 논리가 핵심 요소가 아닌 것은 이상한 일입니다. – stukselbax

관련 문제