@Apr 04, 2019
I'm writing small Windows utility and one of the taxes one has to pay in Windows software is the need for an installer.
I have thoughts on what is a good installer. This is how an installer looks:
(it's a first draft, there will be more info on that window).
An installer is not a complicated thing. All it does:
- copy the files to a destination folder
- create few registry entries for the uninstaller
- create a shortcut in start menu and desktop
It's tedious work but not very challenging.
And yet most programmers relegate creating the installer to a tool like InnoSetup, NSIS, MSI or some such.
As a result they end up with lowest common denominator for the installation experience.
MSI is especially bad. MSI installers tend to grind for several seconds doing god knows what.
NSIS is better but the default is to create a multi-step installer where users has to click and click and click to advance the installation.
My installer really has only one button: "Install and Run". There's no need to show the licence, to ask the user to select options, to ask to accept the terms.
Amazon has one click buying, I have one click installation.
Here's an installation trick that I've learned from uTorrent.
Most installers are separate programs that embeds the payload to be installed (i.e. application and other files it needs) inside the installer and extracts the payload to installation directory.
Installation logic is just few kilobytes of the code so I create applications that are their own installers.
If the file has "-installer" in the exe name (e.g.
fastfilefinder-v0.1-installer.exe), I assume it should run in the installer mode and show the installer UI. The installer then copies itself under non-installer name, e.g.
fastfilefinder.exein which case I assume it should act as an app.
The app also accepts
-unstallcmd-line argument to perform un-installation logic (delete the files, remove registry entries).
Go to index of articles.