Inno-Setup-Installer

 13. Februar 2022 •  Ekkart •  Computer, Programmierung •  Computer

Nach dem NSIS-Debakel der nächste Versuch, diesmal mit Inno Setup, ebenfalls Open Source und Freeware, aber nicht plattformunabhängig.

Zum Glück gibt es amake, der ein Docker-Image für Inno-Setup gebastelt hat und per Docker-Hub zur Verfügung stellt. Das ist sogar noch komfortabler, da so die gleiche Umgebung überall zur Verfügung steht. Technisch ist das ein Linux, auf dem Inno Setup mittels Wine läuft, sagen wir so: gut dass ich das nicht machen muss.

Wie sieht es jetzt mit der Installer-Datei selbst aus?

Die ist erstaunlich einfach zu erstellen. Alle Voreinstellungen sind sinnvoll getroffen, im einfachsten Fall gibt man nur den Programmnamen und die zu installierenden Dateien an. Wenn man tiefer gehen will, kann man das tun, die Doku ist ausreichend gut, um alles nachvollziehen zu können.

Ich hab in zwei Tagen (ca. 6 h incl. Tests) einen durchaus komplexen Installer zusammenbekommen:

  • einfache Variablendefinition per Preprozessor
  • zweisprachig
  • abwählbare Komponenten
  • abwählbare Startmenüverknüpfung
  • zuwählbare Autostart-Option
  • Uninstaller (der wird einfach automatisch erstellt)

Das einzige, was noch nicht läuft, ist der Unicode-Support – keine Ahnung, woran das liegt, muss ich noch rausbekommen. Aber das ist ein Problem von später, derzeit bin ich einfach froh, dass das so problemlos funktioniert.

Einige Konzepte sind echt interessant, die ich ohne Not gleich integriert habe, insbesondere die Komponenten- und Typdefinition, auf die in Tasks mit booleschen Operatoren zugegriffen werden kann. Das ist schon sehr elegant gelöst.

Insgesamt bin ich wirklich zufrieden, NSIS aufgegeben zu haben, Inno Setup reicht völlig aus, Plattformunabhängigkeit durch Docker passt, alles erfüllt, was ich brauche. Jetzt fehlt noch die Doku, dann kann Version 6 offiziell raus.

Aufruf des Docker-Images:

docker run \
	--rm \
	--user "$(id -u):$(id -g)" \
	--name innosetup \
	--volume "${PWD}:/work" \
	amake/innosetup \
		gebu.iss