내가 어떻게하는지 설명 할 수있다. 더 좋은 방법이 있기를 바랍니다. 내 checkBox는 ViewModel 클래스의 속성에 바인딩됩니다. 속성의 설정자에서 checkBox 값이 변경되면 Bundle.wxs 파일에 변수 의 값을 설정합니다.
private bool _installApp1Checked;
public bool InstallApp1Checked
{
get { return _installApp1Checked; }
set
{
_installApp1Checked = value;
if (value == true)
{
Bootstrapper.Engine.StringVariables["InstallApp1"] = "1";
}
else
{
Bootstrapper.Engine.StringVariables["InstallApp1"] = string.Empty;
}
RaisePropertyChanged("InstallApp1Checked");
}
}
private bool _installApp2Checked;
public bool InstallApp2Checked
{
get { return InstallApp2Checked; }
set
{
_installApp2Checked = value;
if (value == true)
{
Bootstrapper.Engine.StringVariables["InstallApp2"] = "1";
}
else
{
Bootstrapper.Engine.StringVariables["InstallApp2"] = string.Empty;
}
RaisePropertyChanged("InstallApp2Checked");
}
}
private bool _installApp3Checked;
public bool InstallApp3Checked
{
get { return _installApp3Checked; }
set
{
_installApp3Checked = value;
if (value == true)
{
Bootstrapper.Engine.StringVariables["InstallApp3"] = "1";
}
else
{
Bootstrapper.Engine.StringVariables["InstallApp3"] = string.Empty;
}
RaisePropertyChanged("InstallApp3Checked");
}
}
그리고 Bundle.wxs에
나는이 :
<Wix ...>
<Bundle ...>
...
<Chain>
...
<MsiPackage>
...
<MsiProperty Name="InstallApp1" Value="[InstallApp1]"/>
<MsiProperty Name="InstallApp2" Value="[InstallApp2]"/>
<MsiProperty Name="InstallApp3" Value="[InstallApp3]"/>
...
</MsiPackage>
</Chain>
</Bundle>
</Wix>
태그를 사용하여 뷰 모델 클래스의 속성이 WSX 파일에서 사용할 수 있습니다. 그런 다음이 값은 내 product.wxs에 설치의 순간에 사용할 수 있습니다
<Product >
...
<Property Id="InstallApp1">
</Property>
<Property Id="InstallApp2">
</Property>
<Property Id="InstallApp3">
</Property>
<Feature Id="ProductFeature" Title="Alvenos" Level="0">
<ComponentRef Id="ProductComponents" />
<Condition Level="1">InstallApp1</Condition>
</Feature>
<Feature Id="AlvenosVSIXFeature" Title="Alvenos" Level="0">
<ComponentRef Id="AlvenosVsix" />
<Condition Level="1">InstallApp2</Condition>
</Feature>
<Feature Id="AlvenosServerVSIXFeature" Title="Alvenos" Level="0">
<ComponentRef Id="AlvenosServerVsix" />
<Condition Level="1">InstallApp3</Condition>
</Feature>
...
</Product>
당신은 응용 프로그램을 의미 즉, 0으로 설정되어있는 기능 태그의 레벨 속성의 기본 값을 볼 수 있습니다 istalled되지 않습니다. 그러나 조건 태그 InstallApp [1], [2] 또는 [3]이 1로 설정되면 Level이 1로 설정되고 응용 프로그램이 설치됩니다. ComponentRef를 사용하여 설치할 앱의 대상 폴더에 대한 정보가 들어있는 Component 태그를 참조하십시오.
<Fragment>
<ComponentGroup Id="InstallApp1" Directory="[target directory id]>
<Component Id="ProductComponent">
<File Source="[your app part of the installer]" />
</Component>
...
</Fragment>
아이디어를 얻길 바랍니다.
[UI에서 UI로 MSI로가는 WiX - checkbox 값] 가능한 복제본 (http://stackoverflow.com/questions/15296980/wix-passing-checkbox-values-from-burn-ui-to-msi) –