Partager via


Installations simultanées

Les installations simultanées, également appelées Installations imbriquées, sont une fonctionnalité déconseillée de Windows Installer. Les applications installées avec des installations simultanées peuvent éventuellement échouer, car elles sont difficiles à traiter correctement pour les clients. N’utilisez pas d’installations simultanées pour installer des produits destinés à être publiés au public. Les installations simultanées peuvent avoir une applicabilité limitée dans des environnements d’entreprise contrôlés lorsqu’elles sont utilisées pour installer des applications qui ne sont pas destinées à une version publique. La documentation sur les installations simultanées est fournie aux auteurs de packages qui souhaitent utiliser des installations simultanées avec des applications qui ne sont pas destinées à la distribution publique.

Une action d’installation simultanée installe un autre package Windows Installer pendant une installation en cours d’exécution. Une installation simultanée est ajoutée à un package en créant une action d’installation simultanée dans la table CustomAction et en planifiant cette action personnalisée dans les tables de séquence. Le champ Cible de la table CustomAction contient une chaîne de paramètres de propriété publique utilisés par l’installation simultanée. Le champ Source de la table CustomAction identifie le package simultané. Une action d’installation simultanée ne peut réinstaller ou supprimer qu’une application installée par le package d’installation de l’application actuelle.

Le type d’action d’installation simultanée est spécifié dans le champ Type de la table CustomAction. Selon le type d’action personnalisé, le package de l’application simultanée peut résider dans un sous-répertoire du package principal, en tant que fichier à un emplacement spécifié par une propriété ou en tant qu’application annoncée sur l’ordinateur de l’utilisateur. Les types d’actions personnalisées suivants effectuent une installation simultanée.

Type d’action personnalisé Description
type d’action personnalisée 7 Installation simultanée d’un produit résidant dans le package d’installation.
type d’action personnalisée 23 Installation simultanée d’un package d’installation dans l’arborescence source actuelle.
type d’action personnalisée 39 Installation simultanée d’un package d’installation publié.

 

Une installation simultanée partage les mêmes paramètres d’interface utilisateur et de journalisation que l’installation principale.

Les actions d’installation simultanées doivent être placées entre l’action InstallInitialize et 'action InstallFinalize de la séquence d’actions de l’installation principale. Lors de la restauration de l’installation principale, le programme d’installation restaure également l’installation simultanée. L’utilisation de exécution différée avec des actions d’installation simultanées n’est pas nécessaire, car le programme d’installation combine les informations de restauration à partir des installations simultanées et principales. Toutes les modifications sont inversées lors d’une installation de restauration.

Les valeurs de retour des actions d’installation simultanées sont identiques à celles des autres actions personnalisées. Consultez valeurs de retour d’action personnalisées.

Les actions standard ou personnalisées qui spécifient un redémarrage automatique du système, ou demandent à l’utilisateur de redémarrer, peuvent également effectuer un redémarrage ou une requête à partir d’une installation simultanée.

Une fois que le programme d’installation démarre une installation simultanée, il verrouille toutes les autres installations jusqu’à ce que l’installation simultanée soit terminée et avant de poursuivre l’installation principale. Le programme d’installation ne peut exécuter que des installations simultanées en tant qu’actions personnalisées synchrones. Consultez actions personnalisées synchrones et asynchrones. Les indicateurs d’option décrits dans options de retour de retour d’action personnalisée doivent être définis sur none (+0) ou msidbCustomActionTypeContinue (+64).

Une action d’installation simultanée peut installer une application pour qu’elle s’exécute localement, pour qu’elle s’exécute à partir de la source, pour être réinstallée ou pour être supprimée de la même manière que lors de l’utilisation de MsiInstallProduct pour une installation régulière. Pour spécifier le type d’installation, transmettez l'ADDLOCAL, ADDSOURCE, RÉINSTALLERou REMOVE propriété à l’action d’installation simultanée.

Les actions d’installation simultanées peuvent être créées en paires, une action utilisée pour l’installation et l’autre action utilisée pour supprimer l’installation simultanée. Un type d’action personnalisé 7 ou type d’action personnalisée 23 est généralement utilisé pour l’installation. Un type d’action personnalisé 39 est généralement utilisé pour supprimer l’installation simultanée lorsque le produit parent est désinstallé. L’enregistrement de l’action personnalisée de suppression dans la table CustomAction peut avoir le GUID de code produit dans le champ Source et « REMOVE=ALL » dans le champ Cible. Les deux actions personnalisées doivent être créées dans la table de séquences d’actions avec des conditions mutuellement exclusives. Par exemple, l’action personnalisée qui installe le produit peut avoir « NON installé » dans son champ Condition et l’action personnalisée supprime l’installation simultanée peut avoir REMOVE="ALL » dans son champ Condition.

Il n’existe aucune méthode pour interroger un package pour son coût. Cela rend le coût d’une installation simultanée difficile. Les lignes doivent être ajoutées à la table ReserveCost pour indiquer les dossiers et les coûts les plus défavorables du composant associé à l’installation simultanée.

Les seules options de traitement de retour d’action personnalisée disponibles avec les actions d’installation simultanées ne sont pas (+0) ou msidbCustomActionTypeContinue (+64).

Notez qu’une installation parente ne peut pas appeler son propre package en tant qu’action d’installation simultanée.

Notez que si une installation par ordinateur tente d’exécuter une installation simultanée par utilisateur, le programme d’installation inscrit l’installation parente par défaut. Cela peut entraîner la suppression incorrecte de l’application par le programme d’installation, car le programme d’installation tente de désinstaller l’application par machine lorsqu’elle est réellement inscrite en tant qu’utilisateur. Pour forcer l’état d’une installation simultanée à suivre l’état de son installation parente, entrez ALLUSERS="[ALLUSERS] » dans la colonne Cible de la table CustomAction. Dans ce cas, l’installation simultanée est par ordinateur si le parent est par machine et que l’installation simultanée est par utilisateur si le parent est par utilisateur.

Les développeurs doivent noter les avertissements suivants lors de la création d’installations simultanées.

  • Les installations simultanées ne peuvent pas partager de composants.
  • Une installation administrative ne peut pas également contenir d’installation simultanée.
  • La mise à jour corrective et la mise à niveau peuvent ne pas fonctionner avec les installations simultanées.
  • Le programme d’installation peut ne pas coûter correctement une installation simultanée.
  • Les progressBars intégrés ne peuvent pas être utilisés avec des installations simultanées.
  • Les ressources à publier ne peuvent pas être installées par l’installation simultanée.
  • Un package qui effectue une installation simultanée d’une application doit également désinstaller l’application simultanée lorsque le produit parent est désinstallé.

Pour empêcher l’installation simultanée d’un package, ajoutez l’une des instructions conditionnelles suivantes à la table LaunchCondition. Cela empêche l’installation du package par une action d’installation simultanée exécutée par une autre installation. Cela n’empêche pas la suppression du package par l’action RemoveExistingProducts. Consultez également la propriétéparentOriginalDatabaseet la propriété ParentProductCode.

"Not ParentProductCode"
"Not ParentOriginalDatabase"