2010-02-18 25 views
3

我最近開始學習和使用WiX,我的第一個真正的項目是使用WiX重新打包Qt的自定義配置。 Qt項目非常龐大,這是一個相當大的挑戰。WiX:在一個非常大的應用程序中使用多個出租車

我已經設法在整個過程中非常不恰當地粉碎我的方式,但最近在鏈接過程中遇到了阻礙。我一直在收到Light.exe錯誤「LGHT0296」,很可能是因爲我創建的CAB遠遠大於2 GB。在嘗試獲得最高壓縮級別之後,並且這沒有什麼不同,唯一的選擇是將安裝包拆分爲多個CAB文件(注意:返回的錯誤非常有助於告訴我哪些課程行動去嘗試)。

無論如何,當談到創建多個CAB文件時,我發現自己有點失落。在這種情況下,我不能完全確定我應該做什麼,而且我還沒有找到任何有用的文檔或示例來說明這種分裂的情況。我這樣做最好的辦法是什麼?

謝謝。

回答

5

你剛纔聲明多個媒體內容是這樣的:

<Media Id='1' Cabinet='package1.cab' EmbedCab='no'/> 
    <Media Id='2' Cabinet='package2.cab' EmbedCab='no'/> 

如果您在安裝媒體有足夠的空間,寧願消除了安裝程序使用,以解包文件所需的時間和磁盤空間,那麼你也可以把包裝的文件在某個文件夾相對於微星這樣的(你甚至可以創建一個MSI that installs itself這樣):

<Media Id='3' Layout="./somefolder" /> 

最後,你選擇在哪些媒體將每個文件中加入一個的DiskID屬性是這樣的:

<File Source="./somefile" DiskId="2" /> 
+0

好的,太好了。看起來我在正確的軌道上,我只需要將DiskIds分配給單個文件。 唯一的問題是我有超過30K的文件。有沒有簡單的方法來做到這一點,或者我應該做一個腳本來做到這一點? (看起來像這樣DiskId可能是一個很好的開關來添加到Heat?) – 2010-02-18 18:14:58

+0

您可以使用XSLT將DiskId添加到使用Heat的-t開關的所有文件元素或wixproj中HeatDirectory的Transform屬性。我使用Heat在每個版本中動態生成wxs文件。 XSLT可用於刪除文件或用靜態文件替換熱文件ID。 – Novaterata 2015-05-07 18:09:27

相關問題