Como instalar o recurso com base na propriedade definida na ação personalizada?
Estou tentando instalar um dos dois recursos com base no valor que deve ser definido dentro da ação personalizada.
Primeiramente, defino o valor de uma propriedade:
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);
}
Em segundo lugar, faço duas condições por dois recursos:
<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>
Observe que eu não defino a propriedade dentro do arquivo wxs anteriormente, pois gostaria de defini-la a partir da ação personalizada.
Minha ação personalizada é chamada antes que InstallInitialize and Execute seja imediato.
No log de instalação, tenho confirmação de que a propriedade está definida. No entanto, minha instalação condicional não funciona, pois parece que o que está na condição é sempre avaliado como falso.
Tentei avaliar as condições: STREAM, STREAM = VERMELHO, STREAM = "VERMELHO", <! [CDATA [STREAM = RED]]>
Estou ficando sem ideias sobre o que fazer e gostaria de receber ajuda.