2009-03-04 61 views
1

在windows應用程序通常打包爲MSI,在Redhat Linux上作爲RPM,什麼是最好的開源打包方法,可用於將應用程序部署到所有平臺,包括不同類型的unix和windows?打包用來部署跨平臺?

內容包括exes,unix二進制文件,java jar文件,用戶數據,甚至要運行的數據庫腳本。我認識到每個目標操作系統的內容會有所不同,例如,二進制文件會不同,win.exe與unix二進制文件等不同,但是例如配置文件可能是相同的,或者在java甚至是字節碼罐的情況下)。

主要特性我希望包裝支持不同的用戶和不同目錄的權限,但是我認識到支持這個功能的多平臺可能非常困難。

回答

1

我有一個客戶端使用IzPack來創建一個安裝程序(它是基於Java的),在Windows,OS X和Linux上安裝他們的應用程序。

http://izpack.org/

5

與其構建一個應該在所有平臺上工作的軟件包(這可能不可能),您應該讓您的構建系統爲每個目標平臺構建不同的軟件包。

+0

如果這確實是不可能的,我將不得不遵循你推薦的方法。但我仍然希望1解決方案適合所有。 – 2009-03-04 23:48:41

+0

我可能錯了,這是不可能的,但我認爲最佳實踐可能會建議您構建平臺特定的軟件包。 – RibaldEddie 2009-03-05 00:27:31

1

NSIS是一個開源的解決方案,據我所知,它能夠構建在Windows和UNIX上運行的安裝程序。但是,對於Windows上的軟件部署(尤其是在企業環境中),MSI是一條路,NSIS更令人頭疼。

因此,我不會建議您嘗試爲不同平臺構建一個包/安裝程序。但是,正如RibaldEddie所指出的那樣,多個軟件包:每個平臺都有一個軟件包。這也允許將包的內容限制到與每個平臺相關的文件。

0

如果你想支持包裝多種發行,我建議,幫助那些發行了打包;爲您的軟件使用某種知名的構建系統(GNU的autotools或類似sconswaf),並將構建,可選依賴關係等記錄在案。

這樣,當Debian,Ubuntu,Red Hat,SuSE,無論什麼包裝商出現時,他們都可以爲您創建軟件包。如果需要,您可以選擇在一個可用的單獨VCS樹中包含一個或多個發行版的打包模板。

如果您打算爲多個系統打包封閉源代碼/專有應用程序,您可能最好打包一個.tar.gz文件並記錄安裝過程。您還需要確保所使用的構建過程不會將任何路徑信息嵌入到應用程序中,以便它可以在/opt/usr/usr/local中運行,這是第三方附加組件的一些流行選擇軟件。

2

With CPack(它附帶CMake)你可以使用「make package」爲Windows(帶NSIS),Linux(rpm和deb)和OS X創建軟件包。 CMake也簡化了跨平臺構建。

對於一個樣品,你可以看看阿伏伽德羅CMakeLists.txtAvoCPack.cmake

0

BitRock InstallBuilder允許你創建你提到的平臺上的每一個安裝程序包(以及從一個單一的項目創建RPM,DEB,包等。文件)