Richtlinien für Pakete

Da die Benutzerkontensteuerung (User Account Control, UAC) in Windows Vista während der Installation Berechtigungen einschränkt, sollten Entwickler*innen von Windows Installer-Paketen nicht davon ausgehen, dass ihre Installation immer Zugriff auf alle Teile des Systems hat.

Ein Installationspaket, das erfolgreich für Standardbenutzer*innen über die Gruppenrichtlinie bereitgestellt werden kann, sollte in den meisten Fällen auch mit UAC in Windows Vista funktionieren. Ausnahmen können auftreten, wenn die Tabelle „InstallUISequence“ die LaunchConditions-Aktion oder die Tabelle „LaunchCondition“ eine Bedingung enthält, die auf der Privileged-Eigenschaft basiert. Windows Installer-Paketentwickler*innen sollten daher die folgenden Richtlinien einhalten, um sicherzustellen, dass ihr Paket mit UAC und Windows Vista funktioniert.

  • Wenn Sie eine Installationskontextbedingung mit einer Aktion in der Tabelle „InstallUISequence“ verwenden, sollten Sie eine bedingte Anweisung basierend auf der Privileged-Eigenschaft angeben. Verwenden Sie keine Bedingung basierend auf der AdminUser-Eigenschaft.
  • Wenn Sie den Installationskontext mit den Startbedingungen der Installation einschließen, verwenden Sie einen Benutzerdefinierten Aktionstyp 19 in der Tabelle „InstallExecuteSequence“, und machen Sie die benutzerdefinierte Aktion von der Privileged-Eigenschaft abhängig. Verwenden Sie keine Aktion in der Tabelle „LaunchCondition“ mit einer Bedingung, die auf der AdminUser-Eigenschaft oder der Privileged-Eigenschaft basiert.
  • Verwenden Sie zum Lesen oder Ändern der Systemkonfiguration eine verzögerte benutzerdefinierte Aktion in der Tabelle „InstallExecuteSequence“. Verwenden Sie keine benutzerdefinierten Aktionen zur sofortigen Ausführung in der Tabelle „InstallUISequence“, um die Systemkonfiguration zu ändern.
  • Um Teile des Systems zu ändern, die nicht benutzerspezifisch sind, verwenden Sie eine verzögerte benutzerdefinierte Aktion in der Tabelle „InstallExecuteSequence“. Sie sollten das msidbCustomActionTypeNoImpersonate-Bit in den benutzerdefinierten Aktionstyp einschließen.
  • Lassen Sie Bit 3 aus dem Wert der Word Count Summary-Eigenschaft weg, um anzugeben, dass das Paket möglicherweise mit erhöhten Rechten versehen werden muss. Beziehen Sie dieses Bit nur ein, wenn keine erhöhten Rechte erforderlich sind, um dieses Paket zu installieren.
  • Verwenden Sie ein Manifest mit der angeforderten Ausführungsebene der Anwendung.
  • Fügen Sie ein Zertifikat in die MsiPatchCertificate-Tabelle des ursprünglichen Pakets ein, und signieren Sie alle Patches mit demselben Zertifikat.
  • Wenn für die Installation eines Windows Installer-Pakets erhöhte Rechte erforderlich sind, sollten die Autor*innen des Pakets das ElevationShield-Attribut für das PushButton-Steuerelement einbeziehen, das zum Starten der Installation verwendet wird. Dadurch werden die Benutzer*innen benachrichtigt, dass beim Klicken auf die Schaltfläche das UAC-Dialogfeld angezeigt wird, in dem die Administratorautorisierung angefordert wird, um die Installation fortzusetzen.
  • Die Eigenschaft MSIDEPLOYMENTCOMPLIANT kann so festgelegt werden, dass der Installer weiß, dass das Paket in Übereinstimmung mit der Benutzerkontensteuerung in Windows Vista erstellt und getestet wurde. Wenn diese Eigenschaft nicht festgelegt ist, bestimmt der Installer, ob das Paket mit der Benutzerkontensteuerung von Windows Vista kompatibel ist.

Außerhalb der Gruppenrichtlinie kann die folgende Überprüfung auf UAC-Konformität unter Windows XP verwendet werden.

So überprüfen Sie die UAC-Konformität außerhalb der Gruppenrichtlinie

  1. Melden Sie sich als Administrator*in beim Clientcomputer an.

  2. Kündigen Sie das Paket für eine Installation pro Computer an:

    msiexec /jmpackage.msi

  3. Melden Sie sich vom Computer ab.

  4. Melden Sie sich als Standardbenutzer*in beim Clientcomputer an.

  5. Versuchen Sie, das angekündigte Paket zu installieren:

    msiexec /ipackage.msi

  6. In den meisten Fällen ist das Paket bei erfolgreicher Installation UAC-konform.

  7. Legen Sie die MSIDEPLOYMENTCOMPLIANT-Eigenschaft im Paket auf 1 fest.

  8. Testen Sie die korrekte Installation des Pakets mit Windows Vista.