2009-08-26 6 views
5

Ich habe ein Problem mit meinem WiX Installer.WiX: Eigenschaftswert verloren zwischen InstallUISequence und InstallExecuteSquence

Ich habe ein benutzerdefiniertes Dialogfeld, das ein Bearbeitungssteuerelement enthält, das mit einer Eigenschaft verknüpft ist. Zur Laufzeit, wenn ich den Wert im Bearbeitungssteuerelement ändere, sehe ich aus dem Protokoll, dass die Eigenschaft ordnungsgemäß mit diesem neuen Wert aktualisiert wird. Aber es scheint, dass, wenn die InstallUISequence endet, die Eigenschaft auf den Standardwert zurückgesetzt wird, was ärgerlich ist, weil ich den Benutzer sugitted Wert in einem benutzerdefinierten Aktionsteil der InstallExecuteSequence nicht verwenden kann. Hier

ist ein Extrakt aus der WXS Skript Ich benutze:

<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:\" /> 

ich nicht auf dem richtigen Weg sein müssen Informationen zwischen den beiden Sequenzen auszutauschen.

Gibt es eine Möglichkeit, das zu tun?

Antwort

14

Sie müssen die Eigenschaft "Sicher" markieren, damit sie von der Clientseite (InstallUISequence) zur Serverseite (InstallExecuteSequence) weitergeleitet wird. Dazu müssen Sie die Eigenschaft "public" (ALL CAPS) machen und sichern. So etwas wie so:

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

Sie brauchen nicht einen Wert zu geben, es sei denn, Sie wollen etwas von standardmäßig in Ihrer Benutzeroberfläche zu zeigen.