| 
  • If you are citizen of an European Union member nation, you may not use this service unless you are at least 16 years old.

  • Work with all your cloud files (Drive, Dropbox, and Slack and Gmail attachments) and documents (Google Docs, Sheets, and Notion) in one place. Try Dokkio (from the makers of PBworks) for free. Now available on the web, Mac, Windows, and as a Chrome extension!

View
 

How To: Fehlende Benutzerprofileinstellungen setzen über Windows Installer Shortcut

Page history last edited by Stefan Weber 12 years, 8 months ago

Zusammenfassung

 

Die Self-Repair Funktionalität von Windows Installer kann dazu benutzt werden fehlende Benutzerkonfigurationen nachzuziehen sobald der Benutzer die Anwendung startet. Dieses How To beschreibt anhand der Applikation PuTTY wie man mit Hilfe von WiX eine entsprechende Installationsroutine erstellt.

 


 

Weitere Informationen

 

Der Windows Installer ist in der Lage fehlende Komponenten nachzuinstallieren oder zu reparieren, wenn diese nicht vorhanden sind. Überpüft werden dazu Elemente mit KeyPath="yes". Fehlt das Element (die Datei oder der Registry Wert), so wird die komplette Komponente erneut ausgeführt. Zu beachten ist dabei allerdings, dass dies standardmässig unter den Rechten des ausführenden Benutzers stattfindet.

 

Pro Komponente kann es nur ein Schlüsselselement (KeyPath="yes") geben.

 


 

Schritt 1: Verzeichnisstruktur

 

PuTTY ist nur eine einzelne Datei, die wir in das Programmverzeichnis kopieren wollen in einen Unterordner PuTTY

 

<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="ProgramFilesFolder">
    <Directory Id="PuTTYFolder" Name="PuTTY" />
  </Directory>
</Directory>


 

Schritt 2: Datei kopieren und Verknüpfung auf dem Desktop erstellen

 

<DirectoryRef Id="PuTTYFolder">
  <Component Id="InstallPuTTY" Guid="YOUR-GUID-HERE">
    <File Id="putty.exe" Source="pfiles\putty.exe" KeyPath="yes" Vital="yes">
      <Shortcut Id="PuttyShortcut" Name="Starten von PuTTY" Icon="PuTTYIcon.exe" Directory="DesktopFolder" Advertise="yes" Description="Startet PuTTY">
        <Icon Id="PuTTYIcon.exe" SourceFile="pfiles\putty.exe"/>
      </Shortcut>
    </File>
 </Component>
</DirectoryRef>

 

Die Komponente InstallPuTTY kopiert die putty.exe in den Ordner PuTTY unterhalb des Programm Verzeichnisses. Für diese Datei wird auf dem Desktop (je nach InstallScope unter All Users oder dem Benutzerdesktop) ein Windows Installer Shortcut erstellt. Der Unterschied zu einem "normalen" Shortcut ist, dass bei klicken auf den Shortcut, der Aufruf zunächst über den Windows Installer erfolgt und dann erst die dahinterliegende Anwendung. Dies ermöglicht es dem Windows Installer seine Key Komponenten zu überprüfen und bei Bedarf eine Reparatur durchzuführen.

 


 

Schritt 3: Benutzerspezifische Konfiguration

 

PuTTY speichert seine Konfiguration in der Registry des jeweiligen Benutzers im Pfad HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions. Für jede konfigurierte Sitzung (sprich Verbindung) wird unterhalb des Schlüssels ein Schlüssel generiert mit dem Namen der Verbindung. Eine Verbindung schreiben wir mit folgendem Beispiel:

 

<DirectoryRef Id="TARGETDIR">
  <Component Id="RegistryEntries" Guid="YOUR-GUID-HERE">
    <RegistryKey Root="HKCU" Key="Software\SimonTatham\PuTTY\Sessions\Einstellung1" Action="createAndRemoveOnUninstall">
      <RegistryValue Type="integer" Name="Present" Value="1" KeyPath="yes" />
      <RegistryValue Type="string" Name="HostName" Value="testlogon" />
      .... viele weitere Keys, siehe Download
   </RegistryKey>
  </Component>
</DirectoryRef>

 

Den ersten Registry Wert setzen wir mit KeyPath="yes". Der Windows Installer prüft dieses Element beim Starten der Applikation über den Shortcut. Ist das Element - in diesem Fall der Registry Key - nicht vorhanden, so installiert/repariert er automatisch unsere komplette Komponente RegistryEntries.

 

Hinweis: Bei benutzerspezifischen Aktionen (schreiben von Registry Werten unter HKEY_CURRENT_USER, oder dem kopieren von Dateien in das Benutzerprofil) kann anders als bei maschinenbezogenen Aktionen keine Datei als Schlüsselelement definiert werden. Hier sind nur Registry Werte als Schlüsselelement erlaubt.

 

Hinweis: PuTTY verfügt über jede Menge Registrywerte. Bitte beachten Sie auch den Artikel Script: Registrywerte als WiX ausgeben  

 


 

Schriit 4: Die Komponenten einem Feature zuordnen

 

<Feature Id="InstallAndConfigPuTTY" Title="PuTTY" Level="1">

  <ComponentRef Id="InstallPuTTY />

  <ComponentRef Id="RegistryEntries />

</Feature>

 

Beide Komponenten müssen einem einzelnen Feature zugeordnet werden. Der Windows Installer überprüft immer nur die Schlüsselelemente, die sich im selben Feature befinden wie der advertised Shortcut. Würde man die Komponente RegistryEntries einem anderem Feature zuordnen, so würde die Nachinstallation nicht durchgeführt.

 


 

Schritt 5: Testen

 

Nach candle und light, die MSI Datei ausführen. Der ausführende Benutzer erhält gleichzeitig auch die Konfiguration. Meldet man sich jetzt mit einem anderen Benutzer an und klickt auf den Shortcut, so startet zunächst der Windows Installer, da das Schlüsselelement HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\Einstellung1 Wert: Present fehlt und installiert die komplette - fehlende - Komponente.

 


No. of visitors

Comments (0)

You don't have permission to comment on this page.