2009-08-26 5 views
5

Je suis confronté à un problème avec mon programme d'installation WiX.WiX: valeur de propriété perdue entre InstallUISequence et InstallExecuteSequence

J'ai une boîte de dialogue personnalisée qui contient un contrôle d'édition lié à une propriété. À l'exécution, si je modifie la valeur dans le contrôle d'édition, je vois dans le journal que la propriété est correctement mise à jour avec cette nouvelle valeur. Mais il semble que, lorsque le InstallUISequence se termine, la propriété est réinitialisée à sa valeur par défaut, ce qui est ennuyeux, car je ne peux pas utiliser la valeur sumitted utilisateur dans une partie d'action personnalisée du InstallExecuteSequence.

Voici un extrait du script WXS J'utilise:

<UI> 
    <Dialog Id="select_list" Width="370" Height="270" Title="Select license and list files"> 
     <Control Id="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="44" TabSkip="no" Text="UIBannerBmp" /> 
     <Control Id="BannerLine" Type="Line" X="0" Y="45" Width="370" Height="0" /> 
     <Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0" /> 
     <Control Type="Edit" Id="list" Width="211" Height="15" X="128" Y="128" Property="pListFile" /> 
     <Control Type="Text" Id="static_list" Width="78" Height="17" X="41" Y="154" Text="list file" /> 
     <Control Type="PushButton" Id="next" Width="50" Height="17" X="232" Y="244" Text="Next &gt;"> 
      <Publish Event="EndDialog" Value="Return">1</Publish> 
     </Control> 
     <Control Type="PushButton" Id="cancel" Width="50" Height="17" X="296" Y="244" Text="Cancel"> 
      <Publish Event="SpawnDialog" Value="CancelDlg">1</Publish> 
     </Control> 
     <Control Type="Text" Id="desc" Width="348" Height="16" X="8" Y="90" 
       Text="Please set the path of the the list file" /> 
    </Dialog> 

    <InstallUISequence> 
     <Show Dialog="select_list" After="WelcomeEulaDlg">NOT installed</Show> 
    </InstallUISequence> 
</UI> 

<CustomAction Id="InstallService" 
       ExeCommand="[bin]prog.exe -f install.cl '[pListFile]'" 
       Execute="immediate" 
       Return="check" 
       Directory="bin" /> 

<InstallExecuteSequence> 
    <Custom Action="InstallService" After="InstallFinalize">REMOVE=""</Custom> 
</InstallExecuteSequence> 

<CustomActionRef Id="InstallService" /> 
<Property Id="pListFile" Value="c:\" /> 

Je ne dois pas être sur la bonne voie d'échange d'informations entre les deux séquences.

Y a-t-il un moyen de faire cela?

Répondre

14

Vous devez marquer la propriété "Secure" pour qu'elle passe du côté client (InstallUISequence) au côté serveur (InstallExecuteSequence). Pour ce faire, vous devez rendre la propriété "public" (toutes les capitales) et sécurisée. Quelque chose comme ceci:

<Property Id="PLISTFILE" Secure="yes"/>

Vous n'êtes pas obligé de donner une valeur à moins que vous voulez quelque chose à montrer par votre interface utilisateur par défaut.

Questions connexes