2013-04-25 95 views
2

我正在爲一組醫療設備SW產品編寫WiX安裝程序,該產品必須安裝在C:的根目錄下的特定目錄中。 IE沒有「ProgramFolders」這些。WiX安裝程序 - 從ComboBox設置ApplicationFolder

它們在專用環境中運行並且已經使用這些目錄進行了驗證和驗證。

我有了一個組合框自定義歡迎對話框:

<Control Id="TypeCombo" Type="ComboBox" X="178" Y="162" Width="120" Height="20" Property="InstallChoiceResult" ComboList="yes" Sorted="no"> 
     <ComboBox Property="InstallChoiceResult"> 
     <ListItem Text="Base dev 1" Value="1"/> 
     <ListItem Text="Base dev 2" Value="2"/> 
     <ListItem Text="Base dev 3" Value="3"/> 
     <ListItem Text="Base Simulator" Value="4"/> 
     </ComboBox> 
    </Control> 

選擇由FSE設置屬性「InstallChoiceResult」。接下來我需要根據他們的選擇設置我的應用程序文件夾。 IE瀏覽器如果他們選擇「基本設備1」,那麼我需要將APPLICATIONFOLDER設置爲C:\ BASEDEV1。如果他們選擇Base dev 2,那麼我們去C:\ BASEDEV2

作爲WiX的新手,我正在爲這個序列而努力。從Orca檢查我的MSI看來,InstallUISequence是在成本覈算發生之後出現的。當我嘗試使用一組自定義操作設置APPLICATION文件夾時,它抱怨說因爲它是一個目錄,所以它必須在CostFinalize之前設置。

我敢肯定我錯過了簡單的東西,但如果我的用戶界面似乎正在運行後,我該如何設置我需要的目錄?我的自定義操作目前的樣子:

<CustomAction Id="SetDev1" Property="APPLICATIONFOLDER" Value="C:\BaseDev1" Execute="immediate" /> 
<CustomAction Id="SetDev2" Property="APPLICATIONFOLDER" Value="C:\BaseDev2" Execute="immediate" /> 
<CustomAction Id="SetDev3" Property="APPLICATIONFOLDER" Value="C:\BaseDev3" Execute="immediate" /> 
<CustomAction Id="SetDevS" Property="APPLICATIONFOLDER" Value="C:\BaseDevS" Execute="immediate" /> 

<InstallUISequence> 
    <Custom Action="SetDev1" Before="InstallDlg2">InstallChoiceResult=1</Custom> 
    <Custom Action="SetDev2" Before="InstallDlg2">InstallChoiceResult=2</Custom> 
    <Custom Action="SetDev3" Before="InstallDlg2">InstallChoiceResult=3</Custom> 
    <Custom Action="SetDevS" Before="InstallDlg2">InstallChoiceResult=4</Custom> 
</InstallUISequence> 

我需要做的基本上是這樣做的一般玩笑:

顯示對話框(FSE選擇1,2,3或模擬器) 之後下一個被按下時,根據組合框中的屬性設置ApplicationFolder 安裝到設置的應用程序文件夾中

任何幫助將非常感謝。

回答

0

您可以使用SetDirectory元素將目錄值設置爲APPLICATIONFOLDER。不需要使用自定義操作,並將目錄值直接綁定到List項目。使組合框屬性爲public(全部大寫字母)。

<Control Id="TypeCombo" Type="ComboBox" X="142" Y="158" Width="120" Height="16" Property="INSTALLCHOICERESULT" ComboList="yes" Sorted="no"> 
    <ComboBox Property="INSTALLCHOICERESULT"> 
     <ListItem Text="Base dev 1" Value="C:\BaseDev1" /> 
     <ListItem Text="Base dev 2" Value="C:\BaseDev2" /> 
     <ListItem Text="Base dev 3" Value="C:\BaseDev3" /> 
     <ListItem Text="Base Simulator" Value="C:\BaseDevS" /> 
    </ComboBox> 
</Control> 

<SetDirectory Id="APPLICATIONFOLDER" Value="[INSTALLCHOICERESULT]" Sequence="execute" />