2010-08-27 54 views
1

將我的安裝程序版本升級到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

維克斯3.5.0619.0包含以下變化(從http://wix.sourceforge.net/releases/3.5.2519.0/history.txt):

智能cabbing現在捕獲所有 重複的文件,而不僅僅是那些從 相同的源路徑(基於文件哈希 ) 。

從Wix 3.0升級到3.5後,我也觀察到類似的安裝程序大小減小。上述變化可以解釋這一點,因爲我們的安裝程序提供的文件中存在一些重複內容,並且這些文件只能通過文件散列而不是源代碼路徑獲取。

1

你在3.0中有不同的源代碼路徑嗎?你的3.5?

WiX Smart Cabbing

+0

其實,沒有,我沒有改變任何的定義,只調用不同的light.exe – zvolkov 2010-08-27 21:34:12

+0

那麼,智能cabbing會解釋行爲的差異,根據羅布的文章,沒有命令行開關來啓用它,它自動基於源路徑。因此,無論是修正了一些問題,還是改變了構建環境,以至於現在都以某種方式解決了相同的問題。 – 2010-08-27 21:39:09

1

可以共享MSI的地方(如果你願意隨時給我下線聯繫,看http://robmensching.com)?我知道在WiX v3.5中沒有任何可能導致這種劇烈變化的變化......除非你的.wxs文件改變了......或者有一個錯誤。 ;)

+0

不幸的是,這是一個私人產品,我不允許分發它。任何其他選項? – zvolkov 2010-09-16 20:11:07

+0

挖掘兩個WiX工具集之間的差異和根源問題?或者,也許只是開心,這是一個表現贏,而不是性能損失? ;) – 2010-09-19 17:09:33

+0

有沒有人得到這個底部?我升級到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