Freigeben über


Verwenden von Windows Installer bei einem Terminalserver

Das Folgende kann sich auf Windows Installer-Installationen auswirken, wenn ein Terminalserver verwendet wird. Setupentwickler sollten immer testen, dass ihr Windows Installer-Paket erwartungsgemäß installiert wird, wenn Benutzer auch einen Terminalserver verwenden.

  • Unter Betriebssystemen vor Windows Server 2008 und Windows Vista muss die Systemrichtlinie EnableAdminTSRemote festgelegt werden, damit Administratoren Installationen in der Clientsitzung durchführen können. Ab Windows Server 2008 und Windows Vista hat die Richtlinie „EnableAdminTSRemote“ keine Auswirkungen mehr. Unabhängig von deren Einstellung können Administratoren und Nichtadministratoren eine Installation in der Clientsitzung oder der Konsolensitzung durchführen. Administratoren und Nichtadministratoren können Windows Installer-Installationen immer in der Konsolensitzung durchführen.
  • Windows Installer verhindert eine Installation im benutzerspezifischen Installationskontext, wenn die SystemrichtlinieDisableUserInstalls auf „1“ festgelegt wurde. In diesem Fall ignoriert das Installationsprogramm alle Anwendungen, die als „benutzerspezifisch“ registriert wurden, und sucht nur nach Anwendungen, die als „computerspezifisch“ registriert wurden.
  • Wenn ein Administrator eine Installation in einer Clientsitzung eines unter Windows 2000 gehosteten Terminalservers durchführt, muss die Installation einen UNC-Pfad (keinen zugeordneten Laufwerkbuchstaben) verwenden.

Entwickler sollten bei der Entwicklung einer Windows Installer-Komponente, die auf einem Terminalserver verwendet werden kann, die folgenden Richtlinien einhalten.

  • Schreiben Sie alle HKCU-Registrierungsinformationen in den Teil HKCU\Software der Registrierung.
  • Das Speichern von Konfigurationsinformationen in INI-Dateien wird nicht empfohlen.
  • Schreiben Sie benutzerspezifische Informationen bei der ersten Ausführung der Anwendung (nicht zur Installationszeit) in die Registrierung. Wenn Sie benutzerspezifische Informationen zur Installationszeit in die Registrierung schreiben müssen, trennen Sie die benutzer- und computerspezifischen Informationen in verschiedene Windows Installer-Komponenten. Erstellen Sie das Paket so, dass das Installationsprogramm nicht versucht, die Komponenten, die benutzerspezifische Informationen enthalten, beim Installieren der Anwendung zu überprüfen und zu reparieren.
  • Ein Paket, das nur für computerspezifische Installationen verwendet wird, sollte Umgebungsvariablen in die Umgebung des Computers schreiben, indem „*“ in die Spalte „Name“ der Umgebungstabelle einbezogen wird. Wenn das Paket für benutzer- oder computerspezifische Installationen verwendet werden kann, verwenden Sie zwei Komponenten. Beziehen Sie die benutzerspezifische Komponente in die Komponententabelle ein, und geben Sie die Benutzereinstellungen in der Umgebungstabelle ein. Beziehen Sie die computerspezifische Komponente in die Komponententabelle ein, und geben Sie die Computereinstellungen in der Umgebungstabelle ein. Steuern Sie, welche Komponente installiert wird, indem Sie bedingte Anweisungen verwenden, die auf der Eigenschaft ALLUSERS im Feld „Bedingung“ der Komponententabelle basieren.
  • Beim Durchführen von computerspezifischen Installationen von einen Terminalserver aus schreibt das Installationsprogramm benutzerspezifische Umgebungsvariablen in HKU\\.Standard\Umgebung. Weil der Terminalserver diesen Abschnitt der Registrierung nicht repliziert, werden bei der Installation keine benutzerspezifischen Umgebungsvariablen festgelegt.
  • Weil ein Server so konfiguriert werden kann, dass Benutzer an der Reparatur von Anwendungen gehindert werden, sollte Ihre Anwendung den Fall von fehlenden Registrierungsschlüsseln ordnungsgemäß behandeln.

Das Folgende gilt, wenn ein Windows Installer-Paket, das DLL-, EXE- oder benutzerdefinierte Skriptaktionen verwendet, im computerspezifischen Installationskontext auf einem Terminalserver installiert wird. In diesem Fall legt das Installationsprogramm die Eigenschaft TerminalServer fest.

  • Verzögerte benutzerdefinierte Aktionen werden im Kontext des lokalen Systems ausgeführt, außer wenn die Aktion das Attribut msidbCustomActionTypeTSAware hat. Dies gilt sogar dann, wenn die benutzerdefinierte Aktion die Identität des Benutzers auf einem System angibt, das kein Terminalserver ist. Beachten Sie Folgendes: Wenn eine benutzerdefinierte Aktion mit dem Attribut msidbCustomActionTypeTSAware die Registrierung des Benutzers ändert, stellt das Installationsprogramm nicht automatisch sicher, dass diese Änderungen auch in der Registrierung jedes Benutzers auf dem Computer vorgenommen werden.
  • Allen Registrierungsvorgängen in einer verzögerten benutzerdefinierten Aktion, die aus der HKCU-Registrierungsstruktur lesen, wird die Standardregistrierungsstruktur des Systems und nicht die Registrierungsstruktur des aktuellen Benutzers angezeigt.
  • Alle Registrierungsvorgänge in einer verzögerten benutzerdefinierten Aktion, die in HKCU\Software schreiben, werden vom Installationsprogramm erkannt und bei der nächsten Anmeldung des Benutzers zu jedem Benutzer des Computers kopiert.
  • Alle Registrierungsvorgänge in einer verzögerten benutzerdefinierten Aktion, die in HKCU schreiben, aber nicht zum HKCU\Software-Registrierungsschlüssel gehören, werden vom Installationsprogramm nicht erkannt oder kopiert.

Weitere Informationen finden Sie im Microsoft Windows Software Development Kit (SDK) unter Terminaldienste.

EnableAdminTSRemote

Eigenschaft „TerminalServer“

Eigenschaft „RemoteAdminTS“

Terminaldienste