In diesem Teil der WiX-Blog-Serie steht das Thema Autostart im Fokus. Die zwei größten Anwendungsfälle für diese Funktion sind das Starten eines benötigten Services im Hintergrund, sowie eine Komfortfunktion um Programme, die man während der Arbeit benötigt, nicht mehr manuell starten zu müssen. Dazu wird im Laufe einer Installation oft gefragt, ob das installierte Programm beim Systemstart direkt mit ausgeführt werden soll. Wie diese Funktion über einen WiX Installer umgesetzt werden kann, soll im Folgenden beschrieben werden.
Um die Auswahl zu ermöglichen, wird zwischen dem aus Teil zwei der WiX Toolset Blogserie bekannten EULA-Dialog und dem Verifizierungs-Dialog ein weiterer Installationsschritt eingebaut, in dem ausgewählt werden kann, ob bestimmte Funktionen aktiviert werden sollen. In diesem Fall betrifft es das Erstellen des Desktop-Icons sowie das Ausführen der Anwendung beim Systemstart. Der Dialog enthält außer zwei Checkboxen und den bekannten Buttons Back, Next und Cancel keine weitere Logik:
Besonders wichtig sind die beiden Controls AutomaticStartup und DesktopCreation. Sie referenzieren jeweils ein Property, welches zusätzlich angelegt werden muss. Um die Übersicht zu behalten, wird empfohlen alle anfallenden Properties in ein eigenes Fragment auszulagern. Im Beispiel wird das Property in dem Fragment angelegt, in dem es von einer Komponente benutzt wird. Innerhalb des DesktopShortcut-Component-Elements wird daraufhin ein zusätzliches Element Condition gelegt, das den Wert der entsprechenden Property überprüft. Das Ergebnis wird im folgenden Screenshot dargestellt:
Dass eine Anwendung beim Systemstart ausgeführt wird, lässt sich auf zwei Arten erreichen: Man kann eine Verknüpfung im StartupFolder von Windows anlegen, oder einen Eintrag in der Registry vornehmen. Der einfachste Weg ist dabei das Hinzufügen einer Verknüpfung in den StartupFolder. Dazu wird der Directory-Struktur der Knoten StartupFolder hinzugefügt, unter dem anschließend ein weiterer Shortcut angelegt wird. Diese Variante bietet zum einen den Charme, sehr simpel zu sein. Des Weiteren kann der Nutzer jederzeit selbstständig ohne größere Komplikationen die Verknüpfung aus dem StartupFolder löschen und somit das Ausführen beim Systemstart verhindern. Ein weiterer Punkt ist die Tatsache, dass der Verknüpfung im StartupFolder Parameter übergeben werden können, die den Programmstart beeinflussen.
Eine weitere Variante, um die Anwendung beim Systemstart auszuführen, ist ein Eintrag in der Registry unter Software \Microsoft\Windows\CurrentVersion\Run. Besonderes Augenmerk sollte darauf auf das Root-Attribut des RegistryValue-Elementes gelegt werden. Dieses Attribut gibt an, ob die Anwendung für die Maschine, also unabhängig vom Nutzer, oder ob sie erst nach der Anmeldung eines bestimmten Nutzers gestartet werden soll. Der Registry-Eintrag zeigt dabei auf die ausführbare Datei im Installationsverzeichnis. Da sich ein Condition-Element stets auf das gesamte Component-Element bezieht, werden für das Setzen des Autostarts über die Registry zwei Component-Elemente benötigt. Dabei enthält die erste Komponente die ausführbare Datei und die zweite das RegistryValue, sowie das Condition-Element zur Überprüfung, ob der Nutzer einen Autostart möchte. Die zweite Komponente wird somit nur installiert, wenn die Condition zutrifft.