2015-10-06 121 views
0

某些上下文:我想在已安裝的產品中包含Java運行時的專用副本。 .msi文件應該建立在集成管道上(Jenkins CI服務器,將通過Maven插件使用WiX)。保留預先打包的.cab文件,以便用WiX創建安裝程序

一種選擇是在構建安裝程序時將JRE(存檔)解壓縮到臨時目錄中,並使其收穫。但是,這需要拆包,掃描和重新打包文件。

所以我寧願如果我可以提供一個已經完成的jre.cab文件並讓WiX使用它。無需指定文件,或通過熱量收集駕駛室內容。

有沒有辦法做到這一點(除了手動打開駕駛室,我不想這樣做,因爲它然後將不會被安裝程序識別)。

如果我可以提供ZIP或TGZ文件而不是CAB,那會更好,但那不是必須的。每次JRE更改時都會創建一個駕駛室。

回答

1

這裏有很多很好的答案。我會給你兩個。

1)我個人會做什麼:(跳過熱量和封裝爲合併模塊)

創建一個構建提取駕駛室,並構建WiX的 作者的IsWix合併模塊項目,包括所有提取的文件。 簽入並在需要時進行構建。現在,您的.MSM坐在您構建檔案區域的架子上。

2)我懷疑什麼,你會更喜歡(用熱和封裝爲二進制維克斯庫)

創建一個構建提取物駕駛室,跑熱,並建立維克斯 籤並在需要時建立。您在構建檔案區域的書架上放置了一個.wixlib/.wixobj。

我有工具(IsWiX),使#1成爲一塊蛋糕。是的,您每次接受新的CAB時都需要手動更新MSM WXS定義,但我認爲這樣做並不重要。這更可靠。由於編譯器/鏈接器必須解壓縮,爲您重新包裝內容,因此MSM會稍微減慢MSI的創建速度。

選項2假定熱永遠不會讓你失敗。這讓我害怕。要想在前期創造所有的管道並且在理論上更少地維持一段時間...要想讓熱火永遠不會讓你失敗,那就更難了。 (我不會這樣認爲)。因爲二進制wixlib處於編譯器/鏈接器的最佳格式,所以.MSI的創建速度會更快一些。

選項1具有與其他工具(如InstallShield)兼容的額外好處。

通過將MSM和MSI創建分離爲2個版本,您可以選擇何時構建每個版本並將它們鏈接在一起。這對於大型項目來說非常有價值。但是,在許多情況下,優化增加了不必要的複雜性。如果我正在編寫一個小型業務應用程序(例如,在應用程序和JRE之間總共需要100MB),我可能不會打擾。我可能只是在幾分鐘內將所有東西作爲一個整體構建在具有SSD存儲的快速虛擬機上。

+0

感謝它是時間不多,它更多的repeatet提取和重新打包,我想避免。 (所以我想避免創建合併模塊的手動步驟)。但我想我可以將兩者結合起來?使用熱量創建一個marge模塊來填充細節...? (我不知道關於WiX :)。無論如何,當它變成eliglbe時將接受你的答案 – eckes

+1

當.CAB內容改變時,合併模塊的手動步驟將更新它的清單。我不認爲這是應該自動化的一些艱苦的步驟,我認爲這是分析和發展。 IsWiX減少了開發過程中的摩擦。 –

相關問題