2014-03-31 104 views
1

我是Wix的新手,因此我原諒我可能會錯誤地使用任何條款。適用於多個項目的通用Wix安裝程序

我有很多項目的一個大的解決方案,其中一些成爲可安裝服務,可執行文件和其他項目。在將有安裝程序的項目的後構建事件中,我運行以下命令來生成包含安裝程序所需的所有文件的片段。

"C:\Program Files (x86)\WiX Toolset v3.8\bin\heat.exe" dir $(TargetDir) -ag -cg harvestedComponents -out $(TargetDir)$(ProjectName).wxs

我想創建一個具有分量的參考佔位符,然後我就可以鏈接到片段一個單一的維克斯安裝項目。這樣我就可以重複使用一個安裝項目的功能,而不需要爲每個可安裝項目設置項目。從那裏我會有第二個構建事件,將鏈接/編譯片段和項目,並傳遞標誌到通用安裝程序項目,可以打開/關閉安裝功能,如添加事件源,不同的自定義操作等。

所以我的問題是如何從可執行項目的後期構建事件鏈接/編譯片段與通用Wix項目。我猜測它會看起來像:

Candle/Light.exe fragment.wxs generic.wxs -eventLog true -customAction1 true -msiName MyInstaller.msi 

在那裏我會使用通用的文件中的EventLog customAction1值啓用/禁用安裝功能。

對不起,並希望這是可能的。

+1

不要忘記每個安裝程序都需要自己的UpgradeCode和Version。 –

回答

1

如果我理解正確的話,你想在你的通用維克斯源文件引用由熱($(TargetDir)$(ProjectName).wxs)創建的片段?
如果是這樣,你只需要在下面添加Feature - 元素一個ComponentGroupRef - 標籤(而不是ComponentRef - 元素你通常會使用)的情況下。至於elemenet的Id,您必須使用您在示例中的熱指令行中使用的ComponentGroup的名稱,harvestedComponents。例如。

<Feature Id="MyFeature" ...> 
    ... 
    <ComponentRef Id="aNormalComponentFromTheCurrentFile" ... /> 
    ... 
    <ComponentGroupRef Id="harvestedComponents" /> 
</Feature> 

還是我錯過了這個觀點?

+0

是的,這回答了它的一部分,謝謝。但我也想弄清楚如何使用蠟燭或光源或其他東西來鏈接這兩個文件,並傳遞命令行參數來評估我的通用文件中的條件。熱後運行的東西看起來像是「candle/light.exe fragment.wxs generic.wxs -eventLog true -custAction1 true」,這可能是兩個不同的命令不能確定的。 –

+0

對不起,遲到的迴應。你的意思是在命令行上設置屬性嗎?如果是,則可以始終在源文件中設置WiX變量(例如$(wix.Eventlog)),然後使用-d = (例如,)來設置命令行上的值。 -dEventlog = TRUE。 – taffit

相關問題