Gleichzeitige Installationen
Gleichzeitige Installationen, auch als geschachtelte Installationen bezeichnet, sind ein veraltetes Feature von Windows Installer. Anwendungen, die mit gleichzeitigen Installationen installiert werden, können später Fehler entwickeln, da es für Kunden schwierig ist, sie ordnungsgemäß zu warten. Verwenden Sie keine gleichzeitigen Installationen für die Installation von Produkten, die für die Öffentlichkeit bestimmt sind. Gleichzeitige Installationen können mit Einschränkungen in kontrollierten Unternehmensumgebungen nützlich sein, wenn sie zum Installieren von Anwendungen verwendet werden, die nicht für die öffentliche Veröffentlichung vorgesehen sind. Die Dokumentation zu gleichzeitigen Installationen wird für Paketautoren bereitgestellt, die gleichzeitige Installationen bei Anwendungen verwenden möchten, die nicht für die öffentliche Verteilung vorgesehen sind.
Bei einer gleichzeitigen Installation wird während einer laufenden Installation ein weiteres Windows Installer-Paket installiert. Eine gleichzeitige Installation wird einem Paket hinzugefügt, indem die Aktion für eine gleichzeitige Installation in der CustomAction-Tabelle erstellt und diese benutzerdefinierte Aktion in den Sequenztabellen eingeplant wird. Das Zielfeld der CustomAction-Tabelle enthält eine Zeichenfolge mit Einstellungen für öffentliche Eigenschaften, die von der gleichzeitigen Installation verwendet werden. Das Quellfeld der CustomAction-Tabelle identifiziert das gleichzeitige Paket. Bei einer gleichzeitigen Installation kann nur eine Anwendung neu installiert oder entfernt werden, die vom Installationspaket der aktuellen Anwendung installiert wurde.
Der Typ der Aktion für die gleichzeitige Installation wird im Typfeld der CustomAction-Tabelle angegeben. Abhängig vom Typ der benutzerdefinierten Aktion kann sich das Paket für die gleichzeitige Anwendung in einem Unterspeicher des Standard-Pakets, als Datei an einem durch eine Eigenschaft angegebenen Speicherort oder als angekündigte Anwendung auf dem Computer des Benutzers befinden. Die folgenden Typen von benutzerdefinierten Aktionen führen eine gleichzeitige Installation durch.
Benutzerdefinierter Aktionstyp | BESCHREIBUNG |
---|---|
Benutzerdefinierter Aktionstyp 7 | Gleichzeitige Installation eines Produkts, das sich im Installationspaket befindet. |
Benutzerdefinierter Aktionstyp 23 | Gleichzeitige Installation eines Installationspakets in der aktuellen Quellstruktur. |
Benutzerdefinierter Aktionstyp 39 | Gleichzeitige Installation eines angekündigten Installationspakets. |
Bei einer gleichzeitigen Installation werden die gleichen Einstellungen für die Benutzeroberfläche und Protokollierung wie bei der Hauptinstallation verwendet.
Gleichzeitige Installationsaktionen sollten zwischen der InstallInitialize-Aktion und der InstallFinalize-Aktion der Aktionssequenz der Hauptinstallation platziert werden. Nach dem Rollback der Standard Installation führt das Installationsprogramm auch ein Rollback für die gleichzeitige Installation durch. Die Verwendung der verzögerten Ausführung ist für gleichzeitige Installationsaktionen unnötig, da das Installationsprogramm Rollbackinformationen aus gleichzeitigen und Hauptinstallationen kombiniert. Bei einer Rollbackinstallation werden alle Änderungen rückgängig gemacht.
Die Rückgabewerte für gleichzeitige Installationsaktionen sind identisch mit denen für andere benutzerdefinierte Aktionen. Weitere Informationen finden Sie unter Rückgabewerte für benutzerdefinierte Aktionen.
Standardaktionen oder benutzerdefinierte Aktionen, die einen automatischen Neustart des Systems durchführen oder den Benutzer zum Neustart auffordern, können einen Neustart oder eine solche Aufforderung auch innerhalb einer gleichzeitigen Installation ausführen.
Sobald das Installationsprogramm eine gleichzeitige Installation beginnt, sperrt es alle anderen Installationen, bis die gleichzeitige Installation abgeschlossen ist und bevor die Hauptinstallation fortgesetzt wird. Das Installationsprogramm kann gleichzeitige Installationen nur als synchrone benutzerdefinierte Aktionen ausführen. Weitere Informationen finden Sie unter Synchrone und asynchrone benutzerdefinierte Aktionen. Die unter Optionen für die Verarbeitung benutzerdefinierter Aktionen beschriebenen Optionsflags müssen auf „none“ (+0) oder msidbCustomActionTypeContinue (+64) festgelegt werden.
Eine gleichzeitige Installation kann eine Anwendung installieren, die lokal oder von der Quelle aus ausgeführt, neu installiert oder auf die gleiche Weise entfernt werden soll wie bei Verwendung von MsiInstallProduct für eine reguläre Installation. Um den Installationstyp anzugeben, übergeben Sie entweder die Eigenschaft ADDLOCAL, ADDSOURCE, REINSTALL oder REMOVE an die gleichzeitige Installationsaktion.
Gleichzeitige Installationsaktionen können paarweise erstellt werden, wobei eine Aktion für die Installation und die andere Aktion zum Entfernen der gleichzeitigen Installation dient. Für die Installation wird in der Regel ein benutzerdefinierter Aktionstyp 7 oder ein benutzerdefinierter Aktionstyp 23 verwendet. Ein benutzerdefinierter Aktionstyp 39 wird in der Regel verwendet, um die gleichzeitige Installation zu entfernen, wenn das übergeordnete Produkt deinstalliert wird. Der Datensatz für die benutzerdefinierte Aktion zum Entfernen in der CustomAction-Tabelle kann die Produktcode-GUID im Quellfeld und „REMOVE=ALL“ im Zielfeld aufweisen. Die beiden benutzerdefinierten Aktionen müssen in der Aktionssequenztabelle mit einander ausschließenden Bedingungen erstellt werden. Beispielsweise kann die benutzerdefinierte Aktion, die das Produkt installiert, im Bedingungsfeld „NOT installed“ enthalten und die benutzerdefinierte Aktion, welche die gleichzeitige Installation entfernt, kann „REMOVE="ALL"“ im Bedingungsfeld enthalten.
Es gibt keine Methode zum Abfragen eines Pakets nach seinen Kosten. Dies erschwert die Kostenermittlung für gleichzeitige Installationen. Der ReserveCost-Tabelle müssen Zeilen hinzugefügt werden, um die Ordner und die höchstmöglichen Kosten der Komponente anzugeben, die der gleichzeitigen Installation zugeordnet ist.
Die einzigen Optionen für die Verarbeitung benutzerdefinierter Aktionen, die bei gleichzeitigen Installationsaktionen verfügbar sind, sind „keine“ (+0) oder msidbCustomActionTypeContinue (+64).
Beachten Sie, dass eine übergeordnete Installation nicht ihr eigenes Paket als gleichzeitige Installationsaktion aufrufen kann.
Beachten Sie, dass das Installationsprogramm die übergeordnete Installation standardmäßig als pro Benutzer registriert, wenn bei einer computerspezifischen Installation versucht wird, eine gleichzeitige Installation pro Benutzer auszuführen. Dies kann dazu führen, dass das Installationsprogramm die Anwendung fälschlicherweise entfernt, da das Installationsprogramm versucht, die Anwendung pro Computer zu deinstallieren, wenn sie tatsächlich als pro Benutzer registriert ist. Um zu erzwingen, dass der Status einer gleichzeitigen Installation den Status der übergeordneten Installation nachverfolgt, geben Sie „ALLUSERS="[ALLUSERS]"“ in die Zielspalte der CustomAction-Tabelle ein. In diesem Fall erfolgt die gleichzeitige Installation pro Computer, wenn das übergeordnete Element pro Computer ist, und die gleichzeitige Installation pro Benutzer, wenn das übergeordnete Element pro Benutzer ist.
Entwickler sollten die folgenden Warnungen beachten, wenn Sie gleichzeitige Installationen erstellen.
- Bei gleichzeitigen Installationen können keine Komponenten gemeinsam genutzt werden.
- Eine Administratorinstallation darf keine gleichzeitige Installation enthalten.
- Das Patchen und Aktualisieren funktioniert bei gleichzeitigen Installationen möglicherweise nicht.
- Das Installationsprogramm kann möglicherweise die Kosten einer gleichzeitigen Installation nicht ordnungsgemäß schätzen.
- Integrierte ProgressBar-Objekte können nicht mit gleichzeitigen Installationen verwendet werden.
- Ressourcen, die angekündigt werden sollen, können nicht durch die gleichzeitige Installation installiert werden.
- Ein Paket, das eine gleichzeitige Installation einer Anwendung ausführt, sollte auch die gleichzeitige Anwendung deinstallieren, wenn das übergeordnete Produkt deinstalliert wird.
Um zu verhindern, dass ein Paket als gleichzeitige Installation installiert werden kann, fügen Sie der Tabelle LaunchCondition eine der folgenden bedingten Anweisungen hinzu. Dadurch wird verhindert, dass das Paket durch eine Aktion für gleichzeitige Installation installiert wird, die von einer anderen Installation ausgeführt wird. Dies verhindert nicht das Entfernen des Pakets durch die RemoveExistingProducts-Aktion. Weitere Informationen finden Sie unter ParentOriginalDatabase-Eigenschaft und ParentProductCode-Eigenschaft.
"Not ParentProductCode"
"Not ParentOriginalDatabase"