【发布时间】:2018-09-04 15:47:00
【问题描述】:
我正在尝试根据应在自定义操作中设置的值安装两个功能中的一个。
首先,我设置一个属性的值:
UINT __stdcall ConfigurationCheckAction(MSIHANDLE hInstall)
{
HRESULT hr = S_OK;
UINT er = ERROR_INSTALL_FAILURE;
hr = WcaInitialize(hInstall, "ConfigurationCheckAction");
if (condition) {
MsiSetProperty( hInstall, TEXT("STREAM"), TEXT("RED") );
}
else {
MsiSetProperty( hInstall, TEXT("STREAM"), TEXT("BLUE") );
}
return WcaFinalize(er);
}
其次,我为每两个特征设定两个条件:
<Feature Id='Complete' Level='1'>
<Feature Id="Red" ConfigurableDirectory="TARGETDIR" Title="F1" Level="0">
<Condition Level="1">STREAM</Condition>
</Feature>
<Feature Id="Blue" ConfigurableDirectory="TARGETDIR" Title="F2" Level="0">
<Condition Level="1">NOT STREAM</Condition>
</Feature>
</Feature>
请注意,我之前没有在 wxs 文件中定义属性,因为我想从自定义操作中设置它。
我的自定义操作在 InstallInitialize 和立即执行之前被调用。
从安装日志中,我确认该属性已设置。 但是,我的条件安装不起作用,因为条件中的内容似乎总是被评估为假。
我尝试评估条件: STREAM,STREAM=RED,STREAM="RED",
我想不出该怎么做,希望能得到帮助。
【问题讨论】:
-
在 wxs 中定义你想要使用的属性(它不需要值)并确保你设置了
Secure='yes'。您可能必须更新您的条件,但这应该允许该属性的新值传递到安装的提升部分。
标签: c++ wix windows-installer custom-action