Eu tentaria SUPERIOR a propriedade MyProperty
para torná-la Propriedade PUBLIC , e então eu também declararia isso em sua fonte WiX via um Property Element e defina o Secure attribute
para Yes
e veja se isso ajuda. A marcação WiX:
<Property Id='MYPROPERTY' Secure='yes' />
Eu também recuperaria a propriedade depois de configurá-la em sua ação personalizada do C ++ para determinar se ela foi definida corretamente (pode estar em branco). Usando o VBScript, você pode recuperar a propriedade com muita facilidade. Aqui está um exemplo (o VBScript ajuda a evitar qualquer compilação e você pode incorporar a fonte na ação personalizada - ótima para fins de teste - e usá-la somente para propósitos de teste):
MsgBox Session.Property("MYPROPERTY")
Como um elemento WiX, algo assim (não é possível testar agora - experimente - lembre-se de inserir o InstallUISequence
ou InstallExecuteSequence
):
<CustomAction Id="Test" Script="vbscript">
<![CDATA[MsgBox Session.Property("MYPROPERTY")]]>
</CustomAction>
Acredito que isso deve ajudá-lo a descobrir qual é realmente o problema.
Você pode usar o elemento Propriedade de WiX para testar a condição codificando um valor definitivo (caso a chamada da propriedade do conjunto de códigos C ++ seja o problema). O seguinte deve fazer com que sua condição de lançamento seja avaliada como falsa (ativando a mensagem que você especificou para mostrar):
<Property Id='MYPROPERTY' Secure='yes' Value="YES" />