2010-01-12 45 views
4

我正在使用Visual Studio構建我的wix文件。到目前爲止,我有一個文件Product.wxs,它可以用於簡單安裝。在VisualStudio環境中將第一個自定義對話框添加到WIX

現在我想添加一些自定義對話框。我覺得從兩篇文章下面,我知道如何做到這一點 - 我讓我的環境搭建後:

http://blog.torresdal.net/2008/10/24/WiXAndDTFUsingACustomActionToListAvailableWebSitesOnIIS.aspxhttp://www.merlinia.com/mdt/WiXTutorial2.msl

我下載的源,我看35 * .wxs文件此目錄 wix35-sources.zip \ src \ ext \ UIExtension \ wixlib

這就是我開始迷路的地方。

  1. 我需要複製一些(只有我想改變的)或所有這些文件到我的Visual Studio項目。到目前爲止,我一直在運行這些源文件。

  2. 我的Product.wxs如何知道使用這些文件?它首先查看本地目錄嗎?還是我必須重建一些C#模塊?

我包括在我Product.wxs這些線路,它給了我在執行時的用戶界面:

<UIRef Id="WixUI_Mondo" /> 
    <UIRef Id="WixUI_ErrorProgressText" /> 

感謝,

尼爾

回答

5

我是否需要複製一些(只有我想改變的)或所有這些文件到 我的VisualStudio項目。到目前爲止,我一直在運行這些源文件。

由於您已經在使用WixUI_Mondo,我假設您要自定義該UI。在wix源文件中找到WixUI_Mondo.wxs,並將其複製到您的visual studio項目中。將該文件重命名爲WixUI_MyCustomUI.wxs,並將該文件內的UI Id屬性更改爲Id="WixUI_MyCustomUI"。您不需要複製任何其他文件;在複製的UI序列中引用的對話框將作爲資源編譯到wix工具中,因此wix按名稱「知道」這些對話框。

在您的product.wxs文件中,將UI參考更改爲<UIRef Id="WixUI_MyCustomUI" />。如果你現在重建你的設置,UI仍然應該看起來像WixUI_Mondo,因爲我們還沒有定製任何東西。

如果有效,您可能需要自定義或添加對話框。再次,您可以從現有對話框開始,通過從wix源複製它。您還必須編輯WixUI_MyCustomUI.wxs文件,以便它使用您的新對話框。看看我寫的這個例子other answer

我的Product.wxs如何知道使用 這些文件?它首先看當地的 目錄嗎?或者我必須 重建一些C#模塊?

您沒有重建任何C#模塊。您下載wix源碼的唯一原因是因爲現有的UI序列和對話框是很好的例子。原則上,您也可以忽略wix源文件,並從頭開始爲UI序列和對話框定義編寫這些wxs文件。

當您使用命令行工具時,只需傳遞多個文件參數即可組合多個wxs文件,並將它們編譯並鏈接在一起。如果您在Visual Studio中使用wix,則只需將wxs文件添加到項目中即可。一個非平凡的wix設置通常會由許多wxs文件定義。

一個WXS文件的內容可以通過元素在其它WXS文件的元素容器的引用如UIRefComponentRefComponentGroupRefDirectoryRef等等。

+0

正確且有用。 –

+0

感謝您的明確解釋。在複製文件,重命名和更新ID之後的第一次構建中,我得到:error LGHT0094:在'Product:{guid ...}'部分中符號'WixUI:WixUI_WCFCustomUI'的未解析引用我已經擁有Visual Studio項目引用到WixUIExtension來讓Mondo工作。 – NealWalters

+0

您是否已將wxs文件添加到您的visual studio項目中?該錯誤似乎表明複製的wxs文件未添加到項目中,或UI中的Id和UIRef元素不匹配。 –

相關問題