I'm sketching an application deployment process for a bunch of relatively complex desktop applications. We have both native and Java apps, so the deployment must be able to check for existence of the JRE and install it if needed. Some of the apps depend on special hardware, so the deployment must also be able to launch the necessary driver installers. Some of the apps are multiplatform, and preferably the same mechanism should be able to create Windows, Linux and Mac OS X installers. That is:
- The installer must be able to install, in addition to the application itself:
- Java Runtime Environment.
- Drivers (hardware) - that is, launch other installers.
- The installer builder must be operable from the command line so that it can be integrated with an automatic build mechanism that generates installer packages for each platform as nightly builds.
- In addition, I need to create "update from the web" mechanisms for the applications. It could be included in the installer, or it could also be a separate custom mechanism built into the application.
Now, this is getting a bit complex, and I suspect that there might be no single installer that could do this all. Therefore I'm thinking between two fundamentally different approaches:
- Platform-specific mechanisms: NSIS would create
.exe
or.msi
for Windows, XXX would create.deb
for Ubuntu, and YYY would create.dmg
for OS X. - Cross-platform installer that would handle all the requirements above: ZZZ?
Any recommendations? Some options that I've looked include:
Is there an universal tool for this, or should I just pick an appropriate tool separately for each platform? In the latter case, what would be "NSIS equivalents" for Ubuntu and Mac OS X?