2010-11-26 53 views
3

我是Windows Installer和Wix的新手,請原諒這個新手問題。Wix安裝程序 - 基於自定義對話框輸入在ExitDialog上有條件地顯示「啓動應用程序」

我正在使用WixUI_InstallDir並添加了一個自定義對話框,顯示LicenseAgreementDlg和InstallDirDlg之前的3個複選框。只有當第一個複選框被選中並且第一次執行安裝程序時,是否有辦法在ExitDialog上有條件地顯示「啓動已安裝的應用程序」複選框?

在我的WXS文件,我有

<!-- Property for each checkbox value (first checkbox checked by default) --> 
<Property Id="Checkbox1" Value="1"/> 
<Property Id="Checkbox2"/> 
<Property Id="Checkbox3"/> 

<!-- Custom action to set exit dialog checkbox --> 
<CustomAction Id="CA_Set_WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Property="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Value="Launch application."/> 

<InstallUISequence> 
    <Custom Action="CA_Set_WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" After="FindRelatedProducts">Checkbox1 = 1 and NOT Installed</Custom> 
</InstallUISequence> 

<!-- User Interface --> 
<UI> 
    <UIRef Id="WixUI_InstallDir"/> 
    <UIRef Id="WixUI_ErrorProgressText"/> 
    <DialogRef Id="MyCheckboxesDlg"/> 
    <Publish Dialog="LicenseAgreementDlg" Control="Next" Event="NewDialog" Value="MyCheckboxesDlg" Order="3">LicenseAccepted = "1"</Publish> 
    <Publish Dialog="InstallDirDlg" Control="Back" Event="NewDialog" Value="MyCheckboxesDlg">1</Publish> 
</UI> 

我的問題是,如果我取消選中第一個複選框,在InstallUISequence結束後Checkbox1屬性值設置爲0,所以在退出對話框啓動的應用程序是仍然顯示。

我應該在UIS​​equence或ExecuteSequence中設置屬性?

回答

1

我想我想通了......當我的自定義對話框中的下一步按鈕被按下而不是在InstallUISequence中調用它時,只調用了CA_​​Set_WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT自定義操作。

<!-- NO LONGER NEEDED 
<InstallUISequence> 
    <Custom Action="CA_Set_WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" After="FindRelatedProducts">Checkbox1 = 1 and NOT Installed</Custom> 
</InstallUISequence> 
--> 

<Fragment> 
    <UI> 
     <Dialog Id="MyCheckboxesDlg" Width="370" Height="270" Title="[ProductName] Setup" NoMinimize="yes"> 
     <Control Id="ChkBox1" Type="CheckBox" X="25" Y="75" Width="200" Height="17" Property='Checkbox1' CheckBoxValue='1' > 
      <Text>First checkbox</Text> 
     </Control> 
     <Control Id="ChkBox2" Type="CheckBox" X="25" Y="95" Width="200" Height="17" Property='Checkbox2' CheckBoxValue='1'> 
      <Text>Second checkbox</Text> 
     </Control> 
     <Control Id="ChkBox3" Type="CheckBox" X="25" Y="115" Width="200" Height="17" Property='Checkbox3' CheckBoxValue='1'> 
      <Text>Third checkbox</Text> 
     </Control> 

     <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="&amp;Next"> 
      <Publish Event="DoAction" Value="CA_Set_WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Order="1">Checkbox1= 1</Publish> 
      <Publish Event="NewDialog" Value="InstallDirDlg" Order="2">1</Publish> 
     </Control> 

     <!-- Other UI controls... --> 

    </Dialog> 
    </UI> 
</Fragment> 
相關問題