我一直在搜尋StackOverflow,博客和FireGiants教程以獲得幾天的明確答案。似乎每個人都有與WiX做一些稍微不同的方式,並且沒有足夠的代碼來真正回答我遇到的問題。WiX安裝條件
我有一個安裝程序,它將創建文件夾,向下複製文件,註冊DCOM dll,添加服務和註冊表項。所有這些工作正常。甚至設法最終創建一個自定義的用戶界面,將編譯,並沒有過多的對話來惹惱我。
什麼我不能爲我的生活找出是使用條件標籤有一個選項,只安裝客戶端文件,或者客戶端和服務器。
我有一個對話框,其中有兩個按鈕用於設置屬性,並且該屬性用於要安裝文件的條件。
DlgWelcome.wxs:
<Fragment>
<UI Id="WelcomeUI">
<Property Id="INSTALLCLIENT" Value="0" Secure="yes"/>
<Property Id="INSTALLSERVER" Value="0" Secure="yes"/>
<Dialog Id="WelcomeDlg" Width="370" Height="270" Title="!(loc.WelcomeDlgTitle)" NoMinimize="yes">
<Control Type="Text" Id="WelcomeDlgTxt" Width="350" Height="30" X="10" Y="60" Text="!(loc.WelcomeDlgText)" />
<Control Type="PushButton" Id="InstallClient" Width="350" Height="50" X="10" Y="90">
<Text>!(loc.ClientInstallBtnText)</Text>
<Publish Property="INSTALLCLIENT" Value="1"/>
<Publish Event="NewDialog" Value="ProgressDlg"/>
</Control>
<Control Type="PushButton" Id="InstallServer" Width="350" Height="50" X="10" Y="150">
<Text>(loc.InstallServerBtnText)</Text>
<Publish Property="INSTALLSERVER" Value="1"/>
<Publish Property="INSTALLCLIENT" Value="1"/>
<Publish Event="NewDialog" Value="ProgressDlg" />
</Control>
</UI>
</Fragment>
Product.wxs:
...
<Feature Id="Installation" Title="Install Stuffs" Display="expand">
<Feature Id="ServerInstall" Level="1" >
<ComponentGroupRef Id="ServerFiles" />
<ComponentRef Id="RegistryForServer"/>
<Condition Level="0">INSTALLSERVER</Condition>
</Feature>
<Feature Id="ClientInstall" Level="1" >
<ComponentGroupRef Id="ClientFiles"/>
<ComponentRef Id="RegistryForClient"/>
<Condition Level="0">INSTALLCLIENT</Condition>
</Feature>
</Feature>
<UI>
<InstallUISequence>
<CostInitialize />
<FileCost />
<CostFinalize />
<Show Dialog="WelcomeDlg" After="CostFinalize"/>
<ExecuteAction />
</InstallUISequence>
</UI>
一些我已經試過了我見過的驗證解決方案的各個崗位都有過的事情顯然解決了類似的問題(不能確認他們是否使用相同版本的WiX,但沒有工作):
- 如果以不同的方式聲明屬性:可以從命令行訪問的所有大小寫(我不使用),以及....這兩者似乎都不起作用。
- 將條件移至各個組件。什麼也沒做。
- 移動NewDialog前後的Publish屬性標籤。沒有效果。
- 使財產安全。沒有。
所以我在我的智慧結束與此。有人能指出我做錯了什麼,所以我可以完成這個安裝程序,並希望永遠不會再看到WiX?
如果您希望在任何一種情況下安裝客戶端文件,您是否有必要將INSTALLCLIENT作爲條件?我懷疑這實際上可以解決您的問題,但它可能會使代碼稍微複雜一些。 –
這不是,來想一想吧。我會刪除它。這對於將來的打樣比什麼都重要,將來安裝人員可能會需要更多的選擇。但問題仍然是我缺少一些關於條件如何工作的東西。 – Daealis
請嘗試我的解決方案,如果這不起作用,請仔細研究條件標籤的級別屬性是如何工作的,因爲我相當確定問題出在哪裏。 –