2010-05-04 82 views
4

我們在文件SomeDialog.wxs中有一個WiX片段,用於提示用戶輸入一些信息。它在控制對話框順序的InstallerUI.wxs文件的另一個片段中被引用。當然,Product.wxs是我們的主要文件。很棒。如何在兩個WiX項目中共享WiX片段?

現在我有另一個應用程序的.MSI的第二個Visual Studio 2008 Wix 3.0項目,它需要問用戶相同的信息。我似乎無法找出共享該文件的最佳方式,以便更改所請求的信息將導致兩個.MSIs獲得新的行爲。

我真的不知道合併模塊,.wsi(include)或.wixlib是否是正確的解決方案。我本來希望找到一個這樣做的人的簡單例子,但我迄今爲止失敗了。

編輯: 基於Rob Mensching's wixlib blog entry,一個wixlib可能是答案,但我仍然在尋找如何做到這一點的例子。

+0

關於wixlibs:您是在尋找一個使用命令行工具的例子,或者您是否在Visual Studio中使用votive? – 2010-05-04 22:41:15

+0

Wim Coenen好問題。我編輯了這個問題,以反映我們正在使用Visual Studio 2008. – 2010-05-05 13:35:37

回答

7

我對.wixlib選項非常滿意。一旦我瞭解了一個.wixlib的內容,我花了幾分鐘的時間去做。
我做了以下操作: 在VS2008中,名爲SQLDialog的「WiX Library Project」類型的Add-> New Project ...。 使用空的<Fragment></Fragment>元素創建庫.wxs文件。 我複製的UI元素從我​​現有的對話框(在我的主「維克斯項目」)進入分片的元素:

<Fragment> 
    <UI> 
    <Dialog Id="SQLServerPromptingDlg" ... Title="SQL Server Information" ...> 
     <Control Id="Next" Type="PushButton" ... Text="!(loc.WixUINext)" /> 
     ... 
    </Dialog> 
    </UI> 
</Fragment> 

我加入了wixlib項目在VS2008發佈版本的配置。 我從主WiX項目中刪除了SQLDialog.wxs文件,而是引用了SQLDialog wixlib項目。
當我重新編譯解決方案時,Main WiX項目的工作原理與之前完全相同!甜!

然後我引用了我的其他WiX項目中的SQLDialog wixlib項目,並從那裏使用它。工作很棒! Build Server很高興,因爲共享的.wixlib項目是它正在編譯的解決方案的一部分。所以,爲了我們的目的,我認爲這比「共享」目錄更好。沒有進攻鮑勃。我很欣賞你的想法。

1

如果它只是一個文件,.wixlib可能會矯枉過正,因爲它需要另一個.wixproj來構建它。我在這種情況下做的是將.wxs放在「共享」目錄中,並使用「添加現有項目」命令中的「添加鏈接」下拉列表將其添加到多個項目中。

+0

感謝您的想法,Bob。我考慮過這種方法,但我更喜歡看解決方案時更直觀的東西。另外,我不想爲構建環境創建任何新的挑戰。 – 2010-05-11 16:44:57

相關問題