2011-11-28 50 views
2

我有一些來自第三方的合併模塊(MSM文件)。不幸的是,我認爲製造MSM的無人機只是點擊了InstallShield,並沒有製造出精美緊湊的MSM。我打開了MSM並刪除了一些完全不需要的InstallShield自定義操作 - 它們彈出了一個控制檯窗口,並嚴重臃腫了我的設置。如何壓縮合並模塊?

這些InstallShield自定義操作二進制文件存儲在Binary表中。我使用Orca刪除了這些條目並保存了MSM。結果,我編譯的MSI文件減少了很多。 (我用WiX編譯)。

不幸的是,MSM文件並沒有大小Orca刪除二進制錶行後減少。我嘗試使用「另存爲」並保存到MSM文件,但結果只有36 KB - 它消除了MSM所需的實際文件!檢查7-Zip中的MSM文件之前和之後(查看MSI使用的內部OLE結構化存儲)顯示,有問題的數據流確實被刪除 - 但整個文件沒有縮小。

我懷疑我需要以某種方式壓縮的MSM文件收回被刪除的自定義操作所需的空間。我該怎麼做呢?

(我爲什麼要問?想犯什麼分佈式源代碼控制系統之前得到這個照顧。)

回答

1

編輯合併模塊文件並不簡單,尤其是因爲它們包含一個CAB壓縮包的文件。我不認爲Orca就夠了。

最簡單和最安全的方法是使用安裝創作工具導入它們,修改它們的設置和內容,然後生成新的MSM文件。

關於自定義操作,請注意安裝創作工具(包括InstallShield)很少會自動添加自定義操作。所以我敢打賭,這些自定義操作是添加了一個目的。

在刪除他們的信息之前,確保你確實不需要他們。

+0

更進一步,我將着眼於徹底拋棄MSM,並將這些文件放在我的應用程序目錄中。他們只將一些DLL放在共享目錄中,然後將該目錄放入PATH中。問題在於該公司沒有找到他們的部署情況:如果客戶已經在PATH中擁有舊版本的工具包,那麼我們的軟件就會中斷。 –