Some examples of such applications already exist in the form of Java JAR files with the application, as well as the installer runtime, bundled inside. This was the same route I took when I was developing the project in college, but quickly discovered that that was a somewhat less that efficient was of handling it.
The first time I wrote this document was over 2 years ago, and as time has gone on and the idea matured, surprisingly little has changed in it. All that has been edited are some implementation ideas, which have been kept back for another entry.
Much (to all) of what is here is already available in existing solutions, and I realise that other packages offer more. The overall difference is that it is designed to work not only on a single operating system, but on many.
I hope that at least some of you might take the time to comment on the ideas here, and perhaps offer additions or suggestions to the list.
The Cross Platform Installer
The problem of modern cross-platform software installations affects both software developers and end-users of that software alike.
The impact of which is users of multi-format software are forced to download/purchase multiple copies of software installation files, each one designed for a different root system type (e.g. Windows, Linux, MacOS). Developers are forced to distribute multiple copies of files, versions of which for less popular formats can often be less than intuitive,
A successful solution would utilize the ease of a Windows software installation and deliver a single, identical package capable of mimicking this standard across a variety of platforms, easing the installation process and, ultimately, benefiting the end-user. The developer would have a tool that would be capable of creating a single customizable package that could install their software on this variety of platforms, allowing them to apply specific instruction sets to the installation depending on the platform in question.
-Familiar, intuitive interface Both the Install Creator and the Installer should have an intuitive, powerful interface. In particular, both should be built upon existing practises of desktop environments, allowing for a degree of familiarity to be apparent from the first use of the application.
-Powerful Command Line Interface The installer should also be able to cater for people who do not use a graphical environment. In this case, a set of equivalent CLI commands should be in place to allow for a similar installation experience. The CLI should follow accepted conventions for command line installations.
-Single file deployment All files regarding the installation are compacted into a single, self-extracting file. This method cuts on the overall size of the installer. Except the case of Network Stub Installation.
-Network Stub Installation Create small, easily downloaded packages that connect to a central resource holding the necessary files, and download and install via the network. Also allows repair functions to be carried out using the most up-to-date versions of files.
-Platform independence Multi-format installers will be capable of installing applications regardless of the platform, maintaining the same overall layout and ease of use.
-Platform biasing The developer is capable of creating an installation routine that will only run on a specified platform (e.g. either Windows or Linux, but not both.). This allows the developer to use the same tool for platform specific installations as platform independent installations.
-System configuration The installer should be capable of making changes or adding entries to system files necessary for the use of the application. These include Windows registry settings and changes to root system files.
-Permissions options Installations can be set to be blocked unless the current user has administration (Windows) or root (Linux) access on the machine.
-Full installation logging An option will exist for an installation to create a text document outlining all changes made to the users system.
-Installation Repair Allow an installation file to analyse individual files and values, and repair any files that do not match those in the installation file. This would allow for easy recovery in the event of installation corruption.
-Automatic uninstaller Separate application created by the installation process capable of rolling back all changes and removing all files created by the system.
Brainfart of the Hour: I wonder why all installers have traditionally been offered in wizard format, even when all you will be offered to change is the path of the installation? Only in corporate/enterprise deployment models is this pattern broken.