Einzelpaketerstellung

Ein duales Paket ist ein Windows Installer 5.0-Paket, das erstellt wurde, um eine Anwendung im benutzer- oder im computerspezifischen Installationskontext installieren zu können. Setupentwickler, die ein duales Paket für ihre Anwendung verwenden, können ihren Benutzern bei der Installation eine Auswahl des Installationskontexts ermöglichen und UAC-Anmeldeinformationen aus benutzerspezifischen Installationen unter Windows 7 oder Windows Server 2008 R2 entfernen. Die Entwicklung eines dualen Windows Installer 5.0-Pakets für die Installation unter Windows 7 und Windows Server 2008 R2 wird als Einzelpaketerstellung bezeichnet.

Sie können mit der Entwicklung von dualen Paketen für Windows 7 und Windows Server 2008 R2 mit Windows Installer 5.0 beginnen, indem Sie die MSIINSTALLPERUSER-Eigenschaft, die ALLUSERS-Eigenschaft und die bekannten benutzerspezifischen Ordner und Registrierungen der Windows Shell verwenden. Wenn Windows Installer 5.0 ein duales Paket im benutzerspezifischen Kontext unter Windows 7 oder Windows Server 2008 R2 installiert, leitet das Installationsprogramm Datei- und Registrierungseinträge an benutzerspezifische Speicherorte weiter, ohne UAC-Aufforderungen zur Eingabe von Anmeldeinformationen anzuzeigen. Das Installationsprogramm leitet Dateien und Registrierungseinträge an computerspezifische Speicherorte weiter und fordert zur Eingabe von UAC-Anmeldeinformationen auf, um zu bestätigen, dass der Benutzer über ausreichende Berechtigungen zum Installieren von Software für alle Benutzer des Computers verfügt, wenn Windows Installer 5.0 ein duales Paket im computerspezifischen Kontext installiert. Nachdem Windows Installer 5.0 eine Anwendung installiert hat, wird derselbe Installationskontext für alle nachfolgenden Updates, Reparaturen oder Deinstallationen der Anwendung verwendet.

Windows Installer 4.5 oder früher: Die MSIINSTALLPERUSER-Eigenschaft und benutzerspezifische Versionen von Ordnern, auf die von den Eigenschaften ProgramFilesFolder, CommonFilesFolder, ProgramFiles64Folder und CommonFiles64Folder verwiesen wird, werden nicht unterstützt. Die Ordner FOLDERID_UserProgramFiles und FOLDERID_UserProgramFilesCommon sind ab Windows 7 und Windows Server 2008 R2 verfügbar. Dies bedeutet, dass Installationen, die für Windows Installer 4.5 oder früher entwickelt wurden, Dateien und Registrierungseinträge direkt in FOLDERID_ProgramFiles, FOLDERID_ProgramFilesCommon, FOLDERID_ProgramFilesX64 bzw. FOLDERID_ProgramFilesCommonX64 weiterleiten. Da es sich um Speicherorte handelt, auf die andere Benutzer des Computers zugreifen können, müssen in Windows Vista und späteren Systeme UAC-Aufforderungen zur Eingabe von Anmeldeinformationen angezeigt werden.

Wenn ein Benutzer ein duales Paket, das für Windows Installer 5.0 erstellt wurde, mit Windows Installer 4.5 oder früher installiert, ignoriert das Installationsprogramm die MSIINSTALLPERUSER-Eigenschaft. In diesem Fall kann die Installation Dateien und Registrierungseinträge an Speicherorte weiterleiten, auf die andere Benutzer zugreifen können, sodass das System UAC-Aufforderungen zur Eingabe von Anmeldeinformationen anzeigen muss. Windows Installer 5.0 kann ein Paket installieren, das für Windows Installer 4.5 oder früher entwickelt wurde. Die Installation leitet jedoch Dateien und Registrierungseinträge an Speicherorte weiter, auf die andere Benutzer zugreifen können, sodass das System UAC-Aufforderungen zur Eingabe von Anmeldeinformationen anzeigen muss.

Richtlinie für die Entwicklung

Befolgen Sie die folgenden Richtlinien für die Einzelpaketerstellung, damit das Paket entweder im benutzer- oder computerspezifischen Kontext installiert werden kann. Befolgen Sie diese Richtlinien, um dem Benutzer die Möglichkeit zu geben, bei der Installation eine benutzer- oder computerspezifische Installation auswählen, und UAC-Eingabeaufforderungen aus benutzerspezifischen Installationen zu entfernen.

  • Für die benutzerspezifische Installation ist Windows Installer 5.0 unter Windows 7 oder Windows Server 2008 R2 erforderlich. Sie sollten den Benutzer darüber informieren, dass das Paket die computerspezifische Installation der Anwendung in früheren Versionen des Systems unterstützt.

  • Initialisieren Sie die Werte für die Eigenschaften ALLUSERS und MSIINSTALLPERUSER in der Property-Tabelle Ihres dualen Pakets. Verwenden Sie den ALLUSERS-Wert 2 und den MSIINSTALLPERUSER-Wert 1 als Anfangswerte. Dadurch wird eine benutzerspezifische Installation als Standardinstallation für das duale Paket festgelegt.

  • Erwägen Sie die Erstellung eines Dialogfelds für die Benutzeroberfläche Ihres dualen Pakets, in dem der Benutzer den Kontext bei der Installation auswählen kann. Erstellen Sie die Steuerelemente in diesem benutzerdefinierten Dialogfeld, um die Werte der Eigenschaften ALLUSERS und MSIINSTALLPERUSER festzulegen. Legen Sie MSIINSTALLPERUSER für den ALLUSERS-Wert 2 auf den Wert 1 fest, um eine benutzerspezifische Installation festzulegen. Legen Sie MSIINSTALLPERUSER auf eine leere Zeichenfolge („“) fest, um eine computerspezifische Installation anzugeben. Benutzer können ALLUSERS und MSIINSTALLPERUSER auch in der Befehlszeile festlegen, wenn sie das Paket über die Befehlszeile installieren.

  • Überprüfen Sie das Paket mithilfe von internen Konsistenzbewertungen (ICEs). Das Paket muss die Überprüfung durch ICE105 bestehen können, damit es als gültiges duales Paket gilt.

  • Verwenden Sie die Registry-Tabelle und RemoveRegistry-Tabelle, um Registrierungseinträge bei benutzerspezifischer Installationen an die benutzerspezifischen Teile der Registrierung umzuleiten. Bei einer benutzerspezifischen Installation werden Registrierungseinträge mit -1 in der Root-Spalte an HKEY_CURRENT_USER umgeleitet, bei einer computerspezifischen Installation an HKEY_LOCAL_MACHINE. Bei einer benutzerspezifischen Installation werden Registrierungseinträge mit msidbRegistryRootClassesRoot (0) in der Root-Spalte an HKCU\Software\Classes und bei einer computerspezifischen Installation an HKLM\Software\Classes weitergeleitet.

  • Verwenden Sie die ProgramFilesFolder-Eigenschaft in der Directory-Tabelle von 32-Bit-Windows Installer-Paketen, um die Speicherorte von Verzeichnissen mit 32-Bit-Komponenten, die nicht anwendungsübergreifend verwendet werden, anzugeben. Wenn ein Benutzer das duale Paket im computerspezifischen Kontexts installiert, werden diese Komponenten unter 32-Bit-Versionen von Windows im Ordner „Program Files“ und in 64-Bit-Versionen des Systems im Ordner „Program Files (x86)“ gespeichert. Auf die Komponenten in diesen Verzeichnissen können alle Benutzer zugreifen. Wenn ein Benutzer das duale Paket unter Windows 7 oder Windows Server 2008 R2 im benutzerspezifischen Kontexts installiert, werden diese Komponenten im Ordner „Programs“ des aktuellen Benutzers gespeichert (z. B. unter %LocalAppData%\Programs), sodass nur der betreffende Benutzer darauf zugreifen kann.

  • Verwenden Sie die CommonFilesFolder-Eigenschaft in der Directory-Tabelle von 32-Bit-Windows Installer-Paketen, um die Speicherorte von Verzeichnissen mit 32-Bit-Komponenten, die anwendungsübergreifend verwendet werden, anzugeben. Wenn ein Benutzer das duale Paket im computerspezifischen Kontext installiert, werden diese Komponenten im Ordner „Common Files“ gespeichert, sodass alle Benutzer darauf zugreifen können. Wenn ein Benutzer das duale Paket unter Windows 7 oder Windows Server 2008 R2 im benutzerspezifischen Kontext installiert, werden diese Komponenten im Ordner „Common“ des aktuellen Benutzers (z. B. unter %LocalAppData%\Programs\Common) gespeichert und können nur für diesen Benutzer zugegriffen werden.

  • Verwenden Sie die ProgramFiles64Folder-Eigenschaft in der Directory-Tabelle von 64-Bit-Windows Installer-Paketen, um die Speicherorte von Verzeichnissen mit 64-Bit-Komponenten, die nicht anwendungsübergreifend verwendet werden, anzugeben. Wenn ein Benutzer das duale Paket im computerspezifischen Kontext installiert, werden diese Komponenten im Ordner „Program Files“ gespeichert, sodass alle Benutzer darauf zugreifen können. Auf die Komponenten in diesen Verzeichnissen können alle Benutzer zugreifen. Wenn ein Benutzer das duale Paket unter Windows 7 oder Windows Server 2008 R2 im benutzerspezifischen Kontexts installiert, werden diese Komponenten im Ordner „Programs“ des aktuellen Benutzers gespeichert (z. B. unter %LocalAppData%\Programs), sodass nur der betreffende Benutzer darauf zugreifen kann. Weitere Informationen zum Erstellen eines Pakets zum Installieren einer Anwendung in 64-Bit-Betriebssystemen finden Sie unter Windows Installer auf 64-Bit-Betriebssystemen.

  • Verwenden Sie die CommonFiles64Folder-Eigenschaft in der Directory-Tabelle von 64-Bit-Windows Installer-Paketen, um die Speicherorte von Verzeichnissen mit 64-Bit-Komponenten, die anwendungsübergreifend verwendet werden, anzugeben. Wenn ein Benutzer das duale Paket im computerspezifischen Kontext installiert, werden diese Komponenten im Ordner „Common Files“ gespeichert, sodass alle Benutzer darauf zugreifen können. Wenn ein Benutzer das duale Paket unter Windows 7 oder Windows Server 2008 R2 im benutzerspezifischen Kontext installiert, werden diese Komponenten im Ordner „Common“ des aktuellen Benutzers (z. B. unter %LocalAppData%\Programs\Common) gespeichert und können nur für diesen Benutzer zugegriffen werden.

  • Verwenden Sie die Eigenschaften ProgramFilesFolder und CommonFilesFolder in der Directory-Tabelle von 64-Bit-Windows Installer-Paketen, um die Speicherorte von Verzeichnissen mit 32-Bit-Komponenten anzugeben. Verwenden Sie unterschiedliche Namen für die 32-Bit- und 64-Bit-Versionen aller Komponenten, die mit demselben Namen bereitgestellt werden. Alternativ können Sie die Versionen in verschiedenen Ordnern speichern. Fügen Sie beispielsweise Informationen zur Directory-Tabelle hinzu, um den Speicherort des Verzeichnisses mit der 32-Bit-Version als „[ProgramFilesFolder]\ISV-Name\Anwendungsname\x86“ und den Speicherort des Verzeichnisses mit der 64-Bit-Version als „[Program64FilesFolder]\ISV-Name\Anwendungsname\x64“ anzugeben. Bei einer computerspezifischen Installation wird dann die 32-Bit-Version unter „Program Files (x86)\ISV-Name\Anwendungsname\x86“ und die 64-Bit-Version unter „Program Files\ISV-Name\Anwendungsname\x64“ gespeichert. Bei einer benutzerspezifischen Installation wird die 32-Bit-Version in „%LocalAppData%\Programs\ISV-Name\Anwendungsname\x86“ und die 64-Bit-Version in „%LocalAppData%\Programs\ISV-Name\Anwendungsname\x64“ installiert.

  • Speichern Sie benutzerspezifische Konfigurationsdaten für die Anwendung unter „\Users\Benutzername\AppData“.

  • Speichern Sie von der Anwendung generierte Vorlagen und Dateien in Unterordnern unter „\Users\Benutzername“.

  • Wenn die Anwendung Shellerweiterungen verwendet, sollten Sie die Shell-Erweiterbarkeitspunkte für benutzerspezifische Installationen verwenden, die ab Windows 7 bzw. Windows Server 2008 R2 verfügbar sind.

  • Verwenden Sie keine benutzerdefinierten Aktionen in Ihrem Paket, für deren Ausführung erhöhte Rechte erforderlich sind. Die CustomAction-Tabelle darf keine benutzerdefinierten Aktionen enthalten, die für die Ausführung mit erhöhten Rechten gekennzeichnet wurden. Weitere Informationen zu benutzerdefinierten Aktionen mit erhöhten Rechten finden Sie unter Sicherheit für benutzerdefinierte Aktionen.

  • Schreiben Sie nicht in globale Systemordner. Die Directory-Tabelle sollte keine Verweise auf eine der folgenden Systemordnereigenschaften enthalten.

AdminToolsFolder
CommonAppDataFolder
FontsFolder
System16Folder
System64Folder
SystemFolder
TempFolder
WindowsFolder
WindowsVolume

Beispiel

Ein Beispiel für ein duales Paket finden Sie in den Windows SDK-Komponenten für Windows Installer-Entwickler als PUASample1.msi-Datei. Wenn Sie über das aktuelle SDK verfügen, haben Sie Zugriff auf alle Tools und Daten, die zum Reproduzieren des Beispielinstallationspakets erforderlich sind. Weitere Informationen zu diesem Beispiel finden Sie im Beispiel für die Einzelpaketerstellung.