To get the application installed on a new computer in current use, there are apparently two main approaches:
- Separate installer: create a separate installer package that creates all the directories, files, registry entries required (for example, MSI, InstallSheild, etc.), and then finally copies your application to the target computer.
- Stand-alone installer: include all the necessary installation steps in the component that is part of your application. Then use this component to check and create the necessary parameters every time the main executable file of the application is launched. those. just run the installation application.
I used several applications that damaged their settings over time, and most of them had a separate installer. Therefore, the only solution was to reinstall, sometimes with settings and even data loss (very frustrating).
In addition, during software projects that I worked on, a separate approach to installers often dictates the distribution of special knowledge about applications both in the installer package and in the application itself. Then, when changes to the code / functionality were changed, it was necessary to update both the installer and the application. He always felt too fragile and prone to human error.
Thus, I am currently leaning towards the self-installer approach due to a simpler and more reliable installation / setup, i.e. just run the application. This self-installation approach, I also consider a more reliable application.
Integration with application settings (parameters) would also be much cleaner, in many cases the same component could perform both installation and configuration.
However, on the negative, performing these additional checks / steps each time you launch the application can negatively affect the launch time, and integration with the OS can be a bit more work, and then using the standard installer.
So, what approach to people recommend and why?
(I'm most interested in installing client desktop applications for the time being.)