將我的安裝程序版本升級到WiX 3.5後,msi尺寸從100Mb降至僅4Mb!起初我以爲有些文件被排除在MSI之外,所以我用-v(verbose)和-notidy(保留臨時文件)選項運行light.exe 3.0和3.5,檢查cab文件,並確實在3.5 cab文件是3.8Mb,而3.0產生98Mb。看着駕駛室,所有的文件似乎都出現了。試圖提取兩個出租車 - 輸出看起來相同。最後,仍然不相信我的眼睛,我安裝了4Mb MSI,它工作正常!什麼可以解釋如此巨大的差異?我目前的理論 - 也許新的WiX使用新的CAB壓縮邏輯,它可以檢測重複文件並創建引用而不是多次添加文件? MSI的連接時間也大幅度下降...我的程序由20個文件夾組成,其中包含幾乎相同的所有DLL文件...從WiX 3.0切換到3.5將msi大小從100Mb減少到4Mb?
回答
維克斯3.5.0619.0包含以下變化(從http://wix.sourceforge.net/releases/3.5.2519.0/history.txt):
智能cabbing現在捕獲所有 重複的文件,而不僅僅是那些從 相同的源路徑(基於文件哈希 ) 。
從Wix 3.0升級到3.5後,我也觀察到類似的安裝程序大小減小。上述變化可以解釋這一點,因爲我們的安裝程序提供的文件中存在一些重複內容,並且這些文件只能通過文件散列而不是源代碼路徑獲取。
你在3.0中有不同的源代碼路徑嗎?你的3.5?
可以共享MSI的地方(如果你願意隨時給我下線聯繫,看http://robmensching.com)?我知道在WiX v3.5中沒有任何可能導致這種劇烈變化的變化......除非你的.wxs文件改變了......或者有一個錯誤。 ;)
不幸的是,這是一個私人產品,我不允許分發它。任何其他選項? – zvolkov 2010-09-16 20:11:07
挖掘兩個WiX工具集之間的差異和根源問題?或者,也許只是開心,這是一個表現贏,而不是性能損失? ;) – 2010-09-19 17:09:33
有沒有人得到這個底部?我升級到WiX3.5,試圖解決以下問題:http://stackoverflow.com/questions/4721266/wix-how-do-i-prevent-multiple-copies-of-a-bound-file-being添加到一個MSI,並發現它減少了我的最終安裝程序的大小。我很想知道我遇到的問題是否是WiX 3.0的限制,或者我是否可以在沒有升級的情況下解決問題。 – 2011-01-19 00:21:33
- 1. 從InstallShield切換到WiX
- 2. C#從.NET 3.5轉換到3.0
- 3. WiX - 從PerUser切換InstallScope到perMachine
- 4. Python virtualenv切換到3.5從2.7
- 5. 最大堆大小從java 6減少到java 7?
- 6. 減少從excel粘貼到word圖表的文件大小
- 7. 從DataGrid減少ViewState的大小
- 8. 減少PDF的大小 - 從5MB至〜200KB
- 9. 與WiX 3.0一起安裝WiX 3.5
- 10. 將查詢數從2減少到1
- 11. 離子切換:減小切換按鈕的大小
- 12. FFMPEG轉換FLV到MP4並減少文件大小
- 13. 減少TimePicker大小
- 14. 減少BitmapDrawable大小
- 15. 如何更改Wix 3.5 MSI的語言?
- 16. FileOutputStream將文件大小減小到0
- 17. 使用Installshield減少Bacic MSI安裝程序大小的方法
- 18. 從小切換Amazon EC2實例到大,重用塊設備
- 19. Android:根據屏幕大小從標籤切換到分隔符
- 20. 如何將ArrayList的大小減少到2?
- 21. 如何將佈局大小減少到屏幕的75%?
- 22. 如何減少從一個活動切換到另一個活動的時間?
- 23. 爲什麼在從android-support-v4切換到v13時,方法數不會減少
- 24. 減少Delphi安裝大小
- 25. WiX:從WiX 3.0升級到WiX後修補補丁不再有效3.6-8
- 26. 如何減少UIImage大小...?
- 27. 從owl-api 3.5切換到4.x時java.lang.NoSuchMethodError
- 28. 腳本結尾從Python 3.5切換到2.7?
- 29. 如何在Python終端上從Python 3.5切換回到3.6
- 30. Docker - 減少拉的大小
其實,沒有,我沒有改變任何的定義,只調用不同的light.exe – zvolkov 2010-08-27 21:34:12
那麼,智能cabbing會解釋行爲的差異,根據羅布的文章,沒有命令行開關來啓用它,它自動基於源路徑。因此,無論是修正了一些問題,還是改變了構建環境,以至於現在都以某種方式解決了相同的問題。 – 2010-08-27 21:39:09