Quels sont les avantages d'utiliser des fichiers .msi par rapport aux fichiers setup.exe habituels?
J'ai l'impression que le déploiement est plus facile sur les ordinateurs sur lesquels les utilisateurs disposent de peu d'autorisations, mais ne sont pas certains des détails.
Quelles sont les fonctionnalités de msiexec.exe qui facilitent le déploiement par rapport à l’utilisation de scénarios setup.exe?
Des conseils ou des astuces lors du déploiement d'applications .msi?
la source
MISE À JOUR, juillet 2018 : Un résumé extrêmement compressé des informations ci-dessous est disponible sur stackoverflow: Les principaux avantages de MSI (
"executive summary"
- de la sorte).J'ai travaillé dans le développement en tant que responsable des versions , ingénieur de construction , développeur d'installation , et en tant qu'emballeur d'applications et ingénieur de déploiement dans de grandes entreprises.
Ceci est une revue des meilleures (et des pires) caractéristiques conceptuelles et du monde réel de MSI. Les problèmes de conception les plus courants rencontrés dans les fichiers MSI sont présentés dans une réponse distincte ci-dessous . Ne pas prétendre être complet - vraiment juste un "dépotoir" en désordre - conçu comme "ce genre de choses qu'on ne trouve pas dans les livres" (probablement pour une bonne raison)
Je souhaite également suggérer que cet article MSDN soit une bonne lecture: Windows Installer: avantages et implémentation pour les administrateurs système .
Standardisation:
En un mot, MSI concerne la normalisation et la gestion des " odeurs de déploiement " des technologies d’installateur classiques . Toute une collection de mauvaises conceptions d'architecture d'installation qui ont causé des problèmes de déploiement répétés.
Globalement, MSI fournit un programme complet et normalisé pour l’installateur, qui inclut également les fonctions et options de désinstallation et intégrées pour une exécution silencieuse avec une interface graphique standard pouvant être déclenchée à distance .
Ces fonctionnalités représentent à elles seules une amélioration considérable par rapport aux technologies d’installation antérieures qui traitaient la désinstallation et le fonctionnement silencieux de manière aléatoire. C’est peut-être les fonctionnalités les plus importantes pour le déploiement en entreprise, avec la gestion fiable des packages à distance via Active Directory ou des outils d’administration à distance dédiés tels que Microsoft SCCM (anciennement SMS), IBM Tivoli , CA Unicenter et similaire.
Quelqu'un a dupliqué une version antérieure de cette réponse . Peut-être une lecture plus rapide?
Anciens installateurs "Odeurs de déploiement"
MSI décourage activement les odeurs de déploiement héritées par conception. Ces sujets sont abordés dans les sections suivantes, mais voici une liste rapide des problèmes les plus reconnaissables avec les programmes d’installation hérités et les technologies de déploiement plus anciennes:
La liste continue avec de nombreuses autres failles de déploiement cruciales et reconnues . C’est bien évidemment dans le monde du déploiement en entreprise que ces problèmes sont apparus le plus souvent. Cela a abouti au métier de « reconditionnement d’application », dans lequel un programme d’ installation hérité est capturé avec les technologies d’analyse de disque et de registre afin de créer un fichier MSI conforme aux normes. pour un déploiement fiable.
Le reconditionnement d’applications est un travail de spécialiste. Il permet généralement d’obtenir des fichiers MSI d’excellente qualité s’il est correctement effectué par des spécialistes , mais il n’est pas possible de reconditionner toutes les applications en raison de la logique d’enregistrement complexe qui doit être exécutée de manière interactive pour que certaines applications fonctionnent.
Avantages MSI - Résumé court
En clair, les avantages les plus importants de MSI sont (sans ordre particulier):
Dans le monde réel , j'ai trouvé des aspects moins réussis d'inclure rapiéçage (très complexe), MSI-GUI (Caractéristiques simples, assez complexes, manque de souplesse), la résilience (peut causer difficile de debug répéter les problèmes d' auto-réparation ), et la complexité globale pour traiter avec la technologie pour les débutants (grande complexité des opérations de base parfois - par exemple, les mises à niveau, l'interface graphique et les nombreux détails en interaction provoquent des résultats inattendus, etc.). La rapidité du processus d’installation a également considérablement ralenti en raison de l’augmentation des frais généraux de MSI. Voir quelques astuces pour améliorer la vitesse d'installation de MSI .
Le reste du texte traite plus en détail de certains de ces aspects de la RSM.
Transparence (format d'installation ouvert)
Un fichier MSI est essentiellement une base de données SQL-Server simplifiée, stockée sous la forme d'un fichier de stockage structuré par COM , essentiellement un système de fichiers dans un fichier ou une collection de flux de données. Il s’agit du type de fichier utilisé dans les documents Microsoft Office . Il en résulte un format standard pouvant être revu et inspecté - un problème de taille pour les grandes entreprises.
À l'exception des actions personnalisées compilées, un fichier MSI est une boîte blanche . Si la configuration change quelque chose de fou, tel que les paramètres réseau à l’échelle du système, vous pouvez le voir à l’ aide des outils appropriés . L'exception notable est les actions personnalisées compilées - qui sont une boîte noire . Les exigences du logo Windows nécessitent que des actions personnalisées soient annotées pour expliquer ce qu'elles font, mais cela est souvent ignoré par les développeurs d'installation. J'espère que l'avènement de Wix améliorera cela.
Pour déterminer ce que ces actions personnalisées compilées font réellement sur le plan technique, une capture de configuration est nécessaire. Ceci est rarement fait dans mon expérience. Il est plus courant de contacter le fournisseur pour obtenir des informations si le logiciel doit être approuvé pour le déploiement en entreprise. Il peut alors s'agir de l'application elle-même qui empêche son utilisation, et pas seulement de la configuration.
Personnalisabilité (transforme)
Un fichier MSI peut être personnalisé via des transformations pour répondre aux besoins et aux normes d'une entreprise tout en permettant une interopérabilité avec les mises à jour du programme d'installation du fournisseur. Vous ne modifiez pas le programme d'installation lui-même, vous créez votre personnalisation dans un fichier distinct, spécifique à l'organisation, appelé transformation (fichier .mst) (un fragment de base de données ou une transaction de modification, si vous le souhaitez). Vous êtes libre de désactiver les actions personnalisées et, en règle générale, de modifier, de remplacer ou de désactiver tout élément du programme d'installation. Vous pouvez même ajouter de nouveaux éléments, y compris des fichiers. Les fichiers de transformation sont également parfois utilisés pour localiser un fichier MSI dans différentes langues. Plusieurs transformations peuvent être appliquées à un seul MSI, voici un exemple avec des chemins tronqués :
Explication rapide du paramètre:
Gestion et reporting
Windows Installer maintient une base de données complète de tous les éléments qu'un produit a installés dans le registre ( HKEY_CLASSES_ROOT \ Installer - ne changez jamais rien directement ici! Cela vaut aussi pour les experts).
Vous pouvez déterminer de manière fiable si un produit est installé, quelles fonctionnalités ont été installées et quelles versions de fichier ont été installées. De plus, vous pouvez obtenir une liste des correctifs éventuellement appliqués au produit de base. Vous pouvez accéder à cette base de données via des API prenant en charge Win32, COM ou .NET à l' aide de divers outils de script, de configuration et d'administration tels que Microsoft SCCM , IBM Tivoli , CA Unicenter, etc.
Sécurité (droits élevés temporaires)
MSI comprend également des principes de «droits élevés» qui permettent à un utilisateur restreint de déclencher l’installation d’un produit nécessitant l’installation de droits d’administrateur. Cela fait partie de la " fonctionnalité de publication " qui permet à un administrateur de mettre les installateurs à la disposition des utilisateurs sans les installer réellement sur tous les postes de travail. Le programme d'installation lui-même doit être créé correctement sur plusieurs comptes principaux pour que ce concept de droits élevés fonctionne correctement. Les utilisateurs peuvent déclencher eux-mêmes l’installation du produit, ou bien l’installation peut être contrôlée par un système de déploiement dédié tel que SCCM, Tivoli, Unicenter (les grandes entreprises en général). Il n'est pas nécessaire de jouer avec les droits d' administrateur temporaires pour faire fonctionner les choses ce qui est souvent le cas avec les installateurs hérités.
La base de données d'installation complète garantit également que vous disposez d'une vue d'ensemble complète des correctifs installés et donc d'une possibilité de détecter les vulnérabilités de sécurité via des outils d'automatisation et d'administration.
Validation
Les fichiers MSI peuvent être vérifiés avec des règles de validation pour s’assurer qu’ils respectent un certain nombre de règles de cohérence interne (appelées ICE).). Les entreprises peuvent créer leurs propres contrôles ICE pour appliquer des règles et des exigences spéciales. Cela aide grandement avec QA. La raison pour laquelle la validation est possible est due à la nature auto-référencée des bases de données relationnelles et du schéma de base de données associé. La base de données doit être cohérente en interne et conforme à son propre schéma en ce qui concerne les clés étrangères, les types de données, la largeur du champ, la version du schéma, etc. La validation va également au-delà et est capable de détecter les failles et les erreurs logiques réelles du paquet. , pas seulement le formatage et les défauts de type. Par exemple, il peut détecter des fichiers ou des types de fichiers en cours de déploiement vers des destinations cibles erronées.
Résilience (auto-réparation)
La fonction d' installation admin du programme d'installation de Windows fournit un moyen standard d'extraire les fichiers source d'un fichier MSI ( voici des informations supplémentaires sur ce sujet ). Ces fichiers sources peuvent ensuite être placés sur un partage et être disponibles pour tous les postes de travail pour l'installation. Cela garantit que les opérations de réparation, de désinstallation et de modification sont terminées sans demander le support d'installation sur CD ou similaire. Ceci est particulièrement important pour les opérations de correction et de mise à jour pouvant nécessiter un accès aux fichiers sources des anciennes versions dans des circonstances particulières.
Il existe également des problèmes courants liés à cette fonctionnalité de résilience. La plupart des administrateurs ont expérimenté des machines avec des cycles d'auto-réparation cycliques qui semblent ne jamais s'arrêter. Suivez le lien pour une longue liste de causes de ce problème. Et encore une fois, voici une version plus courte qui pourrait être plus facile à lire.
Retour en arriere
L'installation d'un fichier MSI déclenchera normalement la création d'un point de restauration . En outre, tous les fichiers et éléments de registre remplacés ou écrasés lors de l'installation seront sauvegardés et restaurés en cas d'échec de l'installation, à l'exception des modifications apportées dans les actions personnalisées.
Les actions personnalisées doivent implémenter leur propre prise en charge de l'annulation pour la conformité du logo Windows. Ceci est souvent ignoré, mais implique la création d'une deuxième action personnalisée pour annuler les modifications apportées par l'action personnalisée principale.
La restauration garantit que le poste de travail reste dans un état stable, même en cas d'échec de l'installation. Le script d'annulation réel est stocké dans un dossier caché directement sur le lecteur système - généralement C: \ Config.MSI - et contient des fichiers avec les extensions .RBS et .RBF - Fichiers de script d'annulation . Comme vous vous en doutez, les fichiers MSI mal conçus peuvent violer les fonctionnalités intégrées de Windows ici. Consultez mon autre article dans ce fil de discussion pour plus de détails.
Il existe des moyens de désactiver la restauration et d'accélérer l'installation. Non recommandé en général, mais voici des détails sur les propriétés MSIFASTINSTALL et DISABLEROLLBACK . Ceci est une fonctionnalité compliquée, mais voici un aperçu rapide des restaurations .
Mise à jour et correctifs
Bien que très complexe, les correctifs dans le programme d'installation Windows sont entièrement gérés et enregistrés sur le système, ce qui permet de déterminer l'état de sécurité du système en vérifiant ce qui a été installé. Les mises à jour sont normalisées selon quelques variantes de base, ce qui permet d'effectuer les mises à jour avec un degré de certitude supérieur, à condition que vous soyez en mesure de gérer la complexité impliquée. Les systèmes de déploiement pourront signaler les mises à jour ayant échoué et pourquoi.
Dans une vue subjective, l'application de correctifs fonctionne bien pour 2 utilisations de base : 1 ) de petits correctifs pour les produits livrés, et 2 ) l'application d'un correctif à un produit installé pour corriger sa séquence de désinstallation défectueuse empêchant une désinstallation propre du produit.
Un correctif est simplement un mécanisme de livraison pour une mise à jour qui fonctionne déjà . En tant que tel, il s’agit simplement d’un conteneur qui est plus compliqué et sujet aux erreurs que la configuration initiale elle-même. La règle numéro un pour un correctif est qu'il doit être plus petit que le MSI d'origine ou il n'y a aucune raison évidente de fournir un correctif. Un correctif peut devenir énorme rapidement s'il cible plusieurs versions du produit.
Journalisation (en effet verbeuse)
Windows Installer fournit une fonctionnalité de journalisation normalisée , bien supérieure aux versions précédentes, bien que très verbeuse. Les fichiers journaux peuvent être déchiffrés à l'aide d'analyseurs de journaux et des niveaux de journal personnalisés peuvent être utilisés pour éviter de générer des fichiers journaux trop volumineux contenant des informations inutiles. À des fins de débogage, la journalisation détaillée est extrêmement utile. Consultez le blog de Rob Mensching pour une méthode manuelle efficace pour lire un fichier journal MSI (vous devez essentiellement rechercher " valeur 3 " dans le fichier journal). Voici un exemple de ligne de commande qui effectue une journalisation détaillée:
Cet article de Robert Macdonald de l’équipe Windows Installer est vivement recommandé. Il offre un aperçu pratique de la journalisation MSI: Comment interpréter les journaux Windows Installer .
Conclusion
Tout ne va pas bien pour Windows Installer . Sa complexité peut parfois être déconcertante , mais pour les grandes entreprises, les fichiers MSI sont nettement supérieurs à toute autre forme de déploiement lorsque l’on prend en compte la liste des avantages ci-dessus.
Nouveau paradigme de l'installateur (l'énorme instruction SQL)
Pour comprendre le nouveau " paradigme ", il est important de comprendre que MSI est conçu comme une description déclarative de ce qui va se passer sur le système cible, plutôt que comme une séquence d'événements fixe. Je suppose que vous pouvez y voir une énorme instruction SQL . Par exemple, vous déclarez les éléments que vous souhaitez ajouter ou modifier dans un fichier INI. Au fur et à mesure que l'installation s'exécute, les modifications sont suivies et une restauration est disponible afin que les modifications puissent être annulées en cas d'échec de l'installation. Cela fonctionne vraiment comme " automagique ", et est fiable quand c'est bien fait.
Actions personnalisées (les suspects habituels)
C’est un casse-tête énorme pour les développeurs MSI expérimentés de voir des personnes s’appuyer sur des actions personnalisées complexes et peu fiables pour une fonctionnalité mieux mise en œuvre avec les fonctionnalités MSI intégrées. Une part importante de toutes les erreurs MSI et de tous les problèmes d'annulation est provoquée par des actions personnalisées erronées, et la plupart des autres erreurs sont causées par une utilisation erronée de la conception MSI (voir la réponse séparée pour la liste des erreurs MSI courantes).
Outre les fonctionnalités MSI intégrées, de plus en plus de fonctionnalités personnalisées sont désormais disponibles via un nouveau framework, tel que Wix - la méthode XML de compilation des fichiers MSI. La logique complexe des actions personnalisées est donc de moins en moins nécessaire.
MSI offre un support complet pour la gestion de la fusion des paramètres de fichier ini, des polices, des variables d’environnement, des clés de registre, des informations COM, des raccourcis, des extensions de fichier, des conditions de lancement, de l’installation de GAC, ODBC, etc.
WIX va encore plus loin avec la prise en charge de fonctionnalités très avancées telles que les extensions serveur SQL, les installations et la configuration IIS, les compteurs de performance, la vérification DirectX et autres tâches liées au jeu, la génération d’images natives .NET, COM +, les pilotes, les règles de pare-feu, les extensions PowerShell, la fermeture des applications, gestion des utilisateurs, des groupes, des partages et bien plus encore. Un peu compliqué à gérer, mais beaucoup plus fiable que vos propres actions personnalisées.
Évitez les actions personnalisées à tout prix si possible
Pour essayer de le mettre en perspective: ces intégrés et des solutions prêtes à l'emploi sont faites par les meilleurs experts de déploiement disponibles , et ils sont testés par des milliers, des dizaines de milliers voire des millions d'utilisateurs (pour intégré des choses dans MSI lui-même). Pensez-vous réellement pouvoir faire mieux vos propres actions personnalisées? L'utilisation d'une action personnalisée doit être un événement rare, et il est absolument nécessaire d'obtenir quelque chose d'unique pour le produit que vous installez . Et vous devez également écrire le support de restauration approprié, ce qui est très compliqué.
Écrire une action personnalisée est presque toujours une erreur , mais il existe de véritables cas dans lesquels vous avez également besoin de flexibilité. Comme toujours, il est important de bien choisir ses batailles. Cela peut sembler amusant au début, mais vous devrez probablement faire face à de nombreux problèmes inattendus et perdre beaucoup de temps coûteux. Je veux dire cela très sérieusement. J'ai moi-même écrit une série d'actions personnalisées C ++ à l'intention des entreprises (afin d'éliminer les actions personnalisées VBScript sujettes aux erreurs). le raccordement à un fichier MSI est extrêmement compliqué. La recherche d’options prédéfinies disponibles vous épargnera probablement des semaines de travail de développement et vous apportera une fiabilité de déploiement bien supérieure.
Utiliser la séquence de lancement de l'application
Un point très important est qu’une grande partie de la configuration de l’application doit se produire au lancement de l’application lorsque le contexte d’exécution est prévisible et que la gestion des erreurs est bonne, et non dans la configuration exécutée une seule fois et comportant des fonctions très complexes d’ emprunt d’emprunt , de séquençage , de conditionnement et d’ exécution. la complexité .
Votre configuration ne doit pas configurer l'application, elle doit préparer l'application pour la configuration lors du premier lancement . En particulier, votre configuration doit écrire tous les paramètres nécessitant des droits élevés - écriture sur HKLM, enregistrement des services, installation sur des chemins par machine et toute chose qu'une application ne peut pas écrire seule avec des droits d'utilisateur normaux.
Si vous êtes un développeur d'installation, vous devez proposer de participer au codage de la séquence de lancement de l'application au lieu d'écrire des actions d'installation personnalisées . Si rien d'autre, afin d'éviter de ressembler, vous essayez de "passer la balle" à quelqu'un d'autre. Dans cette séquence de lancement, vous pouvez écrire du code beaucoup plus fiable et testable, ce qui facilite le test du personnel d’assurance qualité (souvent, il ne comprend pas les tests de déploiement ainsi que les tests d’application).
Complexité d'installation
Le coeur de la complexité de la configuration est centré sur le fait que les erreurs sont cumulatives (vous gérez un processus de livraison, pas seulement une recompilation rapide), les erreurs sont très difficiles à déboguer (aucun accès aux systèmes sur lesquels elles se produisent) et le système cible. les états diffèrent à peu près de toutes les manières imaginables . Reportez-vous à cette réponse pour une analyse plus approfondie de cette complexité et de la défiance redoutable des systèmes cibles: Windows Installer et la création de WiX, et The Complexity of Deployment (voir en bas).
WiX (meilleure solution MSI pour certaines utilisations)
Lisez cette brève introduction à WiX pour une description de la nouvelle méthode de compilation de fichiers MSI basée sur XML. Les fichiers source basés sur du texte offrent un contrôle de la source bien meilleur qu'auparavant. Ceci est un toolkit gratuit et open source fortement recommandé .
NB : Voir ailleurs dans le sujet pour un bref récapitulatif des problèmes de conception courants avec les fichiers MSI. Il est très incomplet, mais mérite une lecture. Je ne voulais pas ajouter cela à cette réponse car ce n'est pas lié à 100%, mais pour une utilisation dans le monde réel, c'est un sujet crucial.
Quelques informations MSI essentielles pour les administrateurs système:
(pardonnez la "promotion" éhontée - c’est pour un accès et une récupération faciles)
Voici quelques liens vers des rubriques pouvant aider les administrateurs système à contrôler le déploiement sur leurs réseaux:
Sujets spéciaux:
Sujets conceptuels / meilleures pratiques:
la source
Cette réponse est vraiment un travail en cours et une ébauche. Les ajouts, questions et mises à jour sont les bienvenus. Cette liste n’est nullement exhaustive. Ajoutez un commentaire avec des informations sur les packages problématiques.
Problèmes typiques et défauts de conception observés dans les packages MSI
Je dois également avertir qu'un grand nombre de fichiers MSI contiennent des erreurs, parfois graves, mais les développeurs d'applications qualifiés pourront le détecter et dans la plupart des cas éliminer le problème. J'ajoute ceci en tant que réponse séparée car cela répond essentiellement à une question différente, mais j'estime que c'est pertinent dans le même fil.
Les détails techniques impliqués dans MSI sont très compliqués . Au niveau de base, il s’agit de décomposer vos fichiers et vos paramètres de registre en composants (installation atomique) et en fonctionnalités (éléments d’application à sélectionner par l’utilisateur à installer, par exemple une fonctionnalité de dictionnaire). Il existe un certain nombre de règles de meilleures pratiques pour la scission des composants, et les erreurs dans les fichiers MSI sont nombreuses. Ces erreurs sont généralement traitées en normalisant l'utilisation de "mises à jour majeures".
L'installation proprement dite s'effectue dans un certain nombre de séquences d'installation, certaines avec des droits élevés . Toutes ces choses sont définies dans des tables de base de données, et c’est là que MSI est terriblement compliqué à comprendre et à traiter. Les actions réparties dans les séquences d'installation sont des actions standard et personnalisées. Les actions standard sont conçues par Microsoft et doivent avoir lieu (la séquence peut parfois être modifiée). Les fournisseurs peuvent utiliser des actions personnalisées pour exécuter une logique personnalisée non couverte par MSI. Ceux-ci peuvent être sous forme de script ou compilés. Les actions personnalisées peuvent être immédiates (exécutées en une fois, ne doivent pas modifier le système, mais le sont souvent) ou différées (écrites dans un script d'exécution qui est ensuite exécuté en tant que transaction et supporte donc la restauration).
Les erreurs typiques dans une MSI sont (sans ordre particulier - et présentées comme un véritable gâchis):
Il y a un certain nombre d'erreurs plus subtiles et plusieurs problèmes plus grands et typiques que j'aurai oubliés.
Consultez l' article relatif aux meilleures pratiques Windows Installer de MSDN .
la source
L'utilisation de MSI facilite également l'application de correctifs (fichiers MSP) et les mises à niveau. MSI utilise le concept de codes de produit et de mise à niveau uniques, ce qui facilite l'ensemble du processus.
Certains systèmes de déploiement (CA Unicenter Software Delivery en est un exemple) peuvent également comprendre les MSI de manière particulière, ce qui leur permet de mieux s'intégrer au système de déploiement. Par exemple, vous pouvez insérer un fichier MSI dans la bibliothèque de logiciels du système de déploiement. Il détectera automatiquement les différentes fonctionnalités du produit et autorisera automatiquement des actions personnalisées beaucoup plus granulaires (installation locale, vérification, réparation, etc.) et la journalisation.
L'auto-guérison / réparation est également un atout majeur pour les MSI.
la source
Découvrez également le programme d' installation Windows source XML , un ensemble d'outils qui crée des packages d'installation Windows à partir d'un code source XML. Cet ensemble d'outils prend en charge un environnement de ligne de commande que les développeurs peuvent intégrer à leurs processus de création pour créer des packages d'installation MSI et MSM. MS l'utilise pour préparer plusieurs de ses principaux packages logiciels.
la source
vous pouvez effectuer des transformations - en théorie, vous pouvez personnaliser beaucoup de choses; si le programme est correctement emballé par le fournisseur, vous pouvez effectuer un déploiement entièrement automatisé sans aucune interaction avec l'utilisateur final - ce qui est très utile lorsque vous souhaitez normaliser votre environnement Windows et disposer de plusieurs des ordinateurs.
pour voir ce que les gens font avec msis [ou un déploiement sans surveillance], visitez par exemple ce site et ses forums.
la source