2015-05-04 25 views
4

對於我的Wix項目,我通過Visual Studio的預生成事件收集4個目錄,這將導致大約160mb的數據和大約220個文件,但構建過程花了很長時間。加快WiX安裝程序的構建過程

我該如何加快這個過程?我有一個嵌入式media.cab文件,它將保存所有文件。文件的大小或數量是否會減慢進程速度?還是在預建事件中使用熱工具進行收割?使用HeatDirectory元素會更快嗎?

任何人提出了一些經驗,加快了這一點?

回答

1

我想你可以使用外部源文件,如果這是可以接受的 - 那麼你沒有冗長的壓縮操作的構建過程中發生的,只是一個文件拷貝(而保持速度越來越快 - 尤其是閃存驅動器)。

通過使自己成爲調試版本的技術,您可以節省大量時間。當我試驗並添加新功能並不斷重建和安裝設置時,通常會使用外部源文件。這可以節省大量時間,具體取決於設置的大小,文件數量和硬件配置。

另一種節省時間的方法是使用特殊的發佈標誌(僅適用於Installshield)僅編譯您目前正在使用的部分安裝程序。 Wix通過其preprocessor有類似的可能性。

如果你還是去壓縮,你可以把先決條件在單獨設置合併模塊避免壓縮他們爲每一個版本(或使用版本的標誌,如果你是InstallShield中,或檢查Preprocessor功能在Wix中)。

最後,你可以嘗試用不同的compression level編譯您的設置(例如none調試版本)。

上壓縮相關答案:What is the compression method used by MSI files?

+0

實際上壓縮程度幾乎爲我節省了一半的構建時間,但現在我也有大約450mb而不是160mb。 「外部源文件」是什麼意思? – Postback

+1

**外部源文件**表示文件放在已編譯的MSI旁邊的文件夾層次結構中,它們根本沒有嵌入到出租車中。這種構建形式最常用於安裝DVD或CD-ROM,因爲它使得安裝速度更快,而不需要解壓縮要求,並且不需要製作單個文件便於下載。源文件夾看起來類似於MSI的管理員安裝(它提取所有cab文件並創建網絡安裝點)。看到細節在這裏:[管理員安裝](http://stackoverflow.com/questions/1547809/extract-msi-from-exe/24987512#24987512) –

+0

好奇,你沒有設置壓縮級別?低perfom如何? –

1

簡單的說,不要收穫文件。請參閱我的博客文章:Dealing with very large number of files

第三個缺點是,您的構建會需要更長的時間來執行 因爲它不僅創建包,但它也是 編寫和驗證您的組件定義。

我在CodePlex上維護一個名爲IsWiX的開源項目。它包含項目模板(腳手架)和圖形設計器,以協助您設置和維護您的WiX源代碼。也就是說,它是圍繞合併模塊設計的,這樣可以減慢編譯的速度,因爲.MSM必須被構建併合併到.MSI中。如果你真的關心純粹的速度,純粹的碎片會更快。這就是說我有160mb左右的安裝人員,而且這一切都不需要很長時間。

當然不要忘了擁有一個快速生成機器。 CPU,RAM和SSD磁盤I/O都有助於快速生成MSI。對於我的諮詢,我使用Microsoft Visual Studio Online(VSO)。我有一個帶有32GB RAM和三星850evo SSD的Core i7-2600k Hyper-V服務器。我的構建服務器(VM)爲本地SCC緩存運行TFS代理服務器。

爲了好玩,在上面的機器上,我從我的system32文件夾中總共獲得了220個文件,總共160MB。建立MSM需要30秒,建立MSI需要30秒,總共需要60秒。這對我來說「足夠快」。我希望MSI只使用片段需要30秒。

+0

我現在實際測量的速度。有了散熱工具,我得到了102秒,熱量被禁用,只需要生成的文件大約101秒,所以文件的生成不是問題。那麼這是預處理器變量還是真正的數據量?我的電腦不是那麼慢,我在I7-3770 @ 3.4GHz – Postback

+0

病毒掃描儀?你必須與我分享你的內容,讓我看得更深。在你的情況下,熱量可能不會變慢,但我已經看到了。特別是當你開始涉及COM收穫。 –