Quel est l'avantage et le but réel de l'installation du programme?

de tous les programmes que j'ai écrits jusqu'à présent, si je veux qu'il fonctionne sur un autre poste de travail, je dois juste copier et coller les fichiers exécutables et nécessaires nécessaires pour le faire fonctionner (E. g: .o fichiers, fichiers binaires..).

mais tout le programme conçu pour un usage commercial est toujours livré avec un installateur. Par exemple les jeux PC. Alors ma question Est: Quels sont les principaux avantages / raisons de faire l'installation quand nous pourrions simplement copier les fichiers vers le poste de travail ciblé?

- l'une des raisons est probablement de prévenir la piraterie. Mais à part ça, je suis sûr qu'il y a d'autres raisons plus fortes?

10
demandé sur Stein Åsmul 2014-03-29 20:50:01

4 réponses

La Complexité de Déploiement

seules les applications les plus simples peuvent fonctionner avec une simple copie de fichier , et même alors vous avez besoin d'avoir un moyen pratique pour réellement télécharger et faire la copie des fichiers à la bonne adresse - et c'est ce à quoi sert une configuration. La configuration est également un outil de marketing qui peut être utilisé pour marque et cohérence entre les produits ainsi que permettre l'installation d'une version d'essai du produit - une partie très importante de la vente de logiciels.

enfin une configuration fournit mise à niveau et correction caractéristiques pour les nouvelles versions ainsi que désinstaller et nettoyage du système lorsque l'utilisateur veut supprimer votre logiciel. Une bonne configuration peut également être signée avec numérique certificats pour s'assurer que le dossier ne peut pas être entravé avec en transit, et que le vendeur est certifié et donc grave. Toutes ces choses sont cruciales pour un produit sérieux.

Il est important de se rappeler que le installation est les utilisateurs première rencontre avec la qualité de votre produit . Si l'installation échoue le produit ne peut pas être évalué. Il semble que ce soit le l'erreur la plus chère à faire dans le développement de logiciel.

les erreurs de déploiement sont cumulatives dans le sens où une fois que vous avez une erreur déployée, vous n'avez généralement pas accès à la machine en question pour le débogage - et le correctif pourrait facilement faire plus de dommages. vous gérez un processus de livraison , pas seulement le code de débogage et les binaires. Chaque livraison ajoute risque et complexité et bientôt vous pouvez avoir une impossibilité de maintenir sur vos mains si vous n'êtes pas prudent . De plus, toutes les machines sur lesquelles votre installation est exécutée seront presque certainement dans un état totalement différent de celui d'un autre ordinateur.

"151930920 de Déploiement" (configurations) est donc le processus complexe de la migration de n'importe quel ordinateur à partir d'un état stable à un autre . Cela exige une approche disciplinée. le setup doit installer tous les fichiers et paramètres requis et s'assurer que le produit est configuré pour le premier lancement ou prêt à être configuré lors du lancement sans échec. Cela peut être une tâche très complexe. La liste des choses qu'un setup peut avoir besoin de faire est croissant tout le temps , et pour chaque nouvelle version de Windows il semble nouveaux obstacles sont mis en place pour rendre le déploiement plus difficile . Tel les obstacles comprennent les messages UAC UAC 151940920", self-repair lockdown sur les serveurs de terminal, changed core MSI caching behavior , nouveau folder redirects , fonctions de virtualisation, nouvelles et modifiées fonctions de signature avec encryption et numérique certificats , active x killbits security Lockdown , 64 bit complexities , etc... La liste est longue.

Application virtualization est un gros problème de nos jours. Il encapsule essentiellement des programmes informatiques du système d'exploitation sous-jacent sur lequel il est exécuté. Il s'agit essentiellement d'un paquet de déploiement pour votre application, mais une application entièrement virtualisée n'est pas installée au sens traditionnel. L'application se comporte à l'exécution comme si elle était directement interfaçante avec l'original le système d'exploitation et toutes les ressources qu'il gère, mais peut être isolé ou ensablé à des degrés divers.

Une vue d'ensemble des Tâches de Déploiement

les tâches et les caractéristiques nécessaires dans une configuration vont du très fondamental et de base avec installateur intégré de Windows ou le soutien d'outils tiers, aux solutions ad hoc hautement personnalisées où vous devez effectivement code quelque chose de vous-même pour faire face à unique, les exigences de déploiement .

les outils de déploiement contiennent vraiment le plus de données dont vous auriez besoin pour n'importe quel déploiement, mais certaines choses sont toujours codées au cas par cas. Ces ad hoc solutions sont implémentés en tant que " " actions personnalisées " dans Windows Installer, et ils sont sans l'ombre d'un doute la principale cause des échecs de déploiement . Voir la section "très avancé" pour plus d'informations sur les actions personnalisées.

surutilisation des actions personnalisées et beaucoup de codage ad hoc a tendance à indiquer conception d'application défectueuse , mais dans certains cas, vous êtes juste face à la nouvelle technologie et vous devez lancer votre propre solution pour obtenir votre solution déployée. C'est exactement à cela que servent les actions personnalisées. Au fil du temps, des solutions normalisées devraient être créées et préférées. Et de petits changements dans la conception des applications peuvent éliminez souvent les actions personnalisées compliquées. C'est un fait très important en matière de déploiement de logiciels - il y a tellement de variables qu'il faut choisir la simplicité dans la mesure du possible.

à un niveau d'aperçu de base, le déploiement doit tenir compte de:

"151930920 De Configuration" Fondamentaux

tous les outils tiers fournissent un bon support pour ces bases de configuration, mais il y a quelques différences. L'installation de conditions préalables peuvent être le domaine où outils de tiers et gratuit des frameworks comme WiX diffèrent le plus en termes de facilité d'utilisation au moment de l'écriture. Le soutien est là, mais il peut être un peu difficile à mettre en place.

  • vérifier si le système est adapté à l'installation pour le colis en question.
    • espace disque.
    • type de système d'exploitation et version.
    • version linguistique.
    • architecture des ordinateurs x86/x64.
    • plates-formes inappropriées: Client Léger / Citrix / services terminaux
      • configuration personnalisée requise en raison du verrouillage personnalisé.
    • peut - être même une situation de logiciels malveillants (je souhaite-peut causer des problèmes de déploiement mystérieux).
    • etc...
  • rechercher la présence et si nécessaire installer conditions préalables et durées d'exécution .
    • permettant le déploiement facile de prérequis et Runtime est une tâche avec un large soutien dans les outils de déploiement tiers. Il y a un support limité pour cela dans Windows Installer lui-même. La caractéristique de base pour la distribution runtime dans Windows Installer est module de fusion - essentiellement le "include file equivalent" pour les fichiers MSI. La façon standard de déployer des fichiers partagés. Un module de fusion est compilé dans votre MSI au moment de la compilation - sorte de liaison précoce en termes de développeur.
    • certains prérequis sont installés via les modules de fusion Windows Installer. D'autres sont généralement installés à l'aide de leur propre fichier de configuration (divers formats).
    • Exemples: Active X for games, Crystal Reports , Microsoft Report View Runtime , MySQL , SQL Server Runtime , VB6 Runtime , ASP.NET MVC Runtime , Java Runtime , Silverlight , Microsoft XNA , VC++ Runtime , .net runtime versions, Visual Studio Tools For Office Runtime , Visual F# Runtime , MSXML Runtime , MS Access Runtime , Apache Tomcat , Various Primary Interop Assemblies , PowerShell versions , etc...
    • enfin, plusieurs core Microsoft components tels que Windows Installer versions et PowerShell versions généralement descendre via Windows Update et pourrait être préférable d'exclure de votre configuration (il suffit de vérifier l'existence, et de dire à l'utilisateur D'exécuter Windows Update si le composant est manquant). Pratique ici varie.
  • Fournissent une interface utilisateur graphique adapté pour la saisie des paramètres de l'utilisateur.
    • il est pratique courante de entrer et valider les clés de licence dans une configuration.
    • personnellement, je pense que c'est mieux fait à partir de l'application elle - même pour des raisons à la fois pratiques et de sécurité-ce qui rend le piratage plus difficile, permet des installations d'essai, réduire les appels de soutien de configuration excessive (vous ne le croiriez pas...), etc...
    • pour les configurations complexes, beaucoup d'interface graphique pourrait être nécessaire pour obtenir le déploiement paramètres-en particulier pour les configurations de serveur avec IIS, MS SQL, COM+ et d'autres composants avancés.
  • permet l'installation en mode silencieux pour l'usage de l'entreprise.
    • extrêmement important - tout le déploiement d'entreprise est automatique et silencieux (pas D'interface graphique pendant l'installation), sauf certaines installations de serveur.
    • les Petites entreprises peuvent exécuter votre installation in GUI mode. Dans mon expérience, ils le font généralement.
    • les utilisateurs à la maison exécutent généralement toujours votre installation en mode GUI.
    • connaître votre groupe cible, et certainement assurez-vous que vous soutenez l'exécution silencieuse si vous ciblez des clients d'entreprise. Cependant, toutes les configurations doivent fonctionner en mode silencieux, et si vous suivez les règles de conception MSI et les meilleures pratiques, il "vient gratuitement".

Ajout De Base Des trucs

ces tâches de base ont le soutien complet dans le moteur D'installateur de Windows lui-même, et tous les outils tiers fournissent le soutien assez équivalent pour chacun d'eux malgré les variations dans les caractéristiques GUI et la facilité d'utilisation.

  • Installer fichiers et paramètres de registre .
  • Installer odbc , des associations de fichiers , raccourcis et icônes .
  • demande de mise à Jour et à l'échelle du système paramètres du chemin d'accès .
  • mise à Jour et de fusion à base de texte, des fichiers tels que fichiers INI .
  • enregistrer les fichiers COM et activer .NET COM Interop si nécessaire.
  • installer les assemblages .NET GAC , et exécuter custom .net installer classes .
  • Installer side-by-side windows assemblées à WinSxS .
  • Livrer , signé et certifié fichiers (s'applique également à la configuration du fichier lui-même).
  • Installer et de contrôle services Windows .
  • installer Applets Du Panneau De Configuration .
  • mise à Jour variables d'environnement .

Je ne m'attarderai pas sur ces questions ou les étoffer avec trop de détails. Toutes ces tâches de déploiement devraient être raisonnablement bien étayées dans tous les outils et cadres de déploiement disponibles. Cependant, de nombreuses personnes gâchent leur déploiement en n'utilisant pas les fonctionnalités de déploiement intégrées et en s'appuyant plutôt sur des actions personnalisées pour ces tâches insignifiantes. Risque totalement ajouté sans aucun gain.

en particulier, nous voyons souvent actions personnalisées utilisées pour installer des Services Windows - et ce est généralement un signe d'un service très mal conçu, ou à d'autres moments l'ignorance de la façon de faire le déploiement. Ces deux questions sont également communes. Le déploiement d'un tel service implique souvent l'application de privilèges personnalisés de permissioning ACL et de NT modifiés pour faire tourner un service avec des droits d'utilisateur à la place. de As LocalSystem - qui est généralement la seule façon correcte d'exécuter les services Windows. Exécuter un service avec des justificatifs d'identité d'utilisateur est un " déploiement anti-pattern " mérite d'être mentionné en passant (plus sur ce plus tard).

une autre utilisation courante de l'action personnalisée qui est toujours erronée est d'installer des fichiers à le GAC via une action personnalisée . Il y a un bon support intégré pour cela dans Windows Installer et n'importe quel les excuses pour installer via une action personnalisée cachent certainement un mauvais design ou une folie généralisée :-). C'est aussi un fait que beaucoup déploient beaucoup trop de choses dans l'ensemble du GAC, mais c'est une question de développement: quand devrais-je déployer mes assemblées dans le GAC?

enfin, . les classes d'installateur net sont destinées aux développeurs pour tester leurs composants pendant le développement - il devrait pas utilisé pour déploiement . Il s'agit essentiellement de L'équivalent .NET de l'auto-enregistrement (ce qui n'est pas non plus acceptable pour MSI - vous devez extraire les informations COM et Ajouter aux tableaux MSI - voir lien pour plus de détails). Un MSI est déclaratif - il devrait contenir tous les changements à apporter au système afin de garantir un retour en arrière et une gestion appropriés. Donc le message est que classes d'installateur. net ne doit être utilisé que pour le développement et les tests . Une fois que vous construisez un MSI pour déployer votre application, vous devez utiliser les constructions MSI pour obtenir un déploiement approprié avec le soutien de rollback et la gestion intelligente. Nous voyons ces classes .net installer utilisées principalement pour le service et Gac installer. Dans un MSI cela se traduit par l'utilisation des ServiceInstall et ServiceControl tables pour les services, et juste marquer un composant pour Gac installer à installer au GAC (doit être une assemblée signée). Une fois que vous savez comment faire, c'est facile et vous ne manquerez pas les classes .net installer parce que MSI fonctionne comme " automagic " quand vous faites ce droit. Vous obtenez rollback fiable gratuitement, avec facilité.

ajouter des éléments avancés (souvent des éléments du serveur)

malgré le soutien dans tous les outils de déploiement pour la plupart de ces questions, j'ai souvent constaté que je devais mettre en œuvre sur mesure actions et solutions ad hoc pour parvenir à un déploiement approprié dans certains cas. C'est notamment le cas pour COM+ et déploiement IIS . WiX fournit un support très personnalisé pour les deux types de déploiement, mais j'ai une expérience limitée de son utilisation.

la mise à jour et l'installation de fichiers XML est une tâche supportée par chaque outil de déploiement car il n'y a pas de support intégré pour cela dans Windows Moteur d'installateur - ce qui est assez étonnant à ce point.

en ce qui concerne installation de la base de données et en particulier mises à jour , je suis sur la clôture en pensant qu'il devrait être fait à partir d'applications avec l'authentification de l'utilisateur appropriée et l'utilisation interactive, au lieu d'un" one shot " et opération de déploiement impersonated (qui pourrait échouer apparemment sans bonnes options de gestion d'exception ou de récupération). Ou dans d'autres cas, il semble mises à jour devrait être un processus géré impliquant des utilisateurs levant des billets d'entreprise gérés par des DBOs professionnels. Plus de détails ci-dessous.

  • Configuration de IIS , Apache , ou autre serveurs web .
    • C'est un monde à part entière, particulièrement en ce qui concerne IIS. J'ai trouvé que les outils de déploiement manquent de fonctionnalités pour déployer des sites comme demandé par les développeurs et les équipes corporate.
    • bien que largement non testé par moi, le cadre de WiX fournit une mise en œuvre très flexible de la configuration et du déploiement D'IIS.
    • Je m'attends à ce que beaucoup d'actions personnalisées soient utilisées pour réaliser des configurations de déploiement spéciales.
  • Exécuter scripts SQL server sur des bases de données.
    • procédures stockées, peut-être même déclencher des sauvegardes ou programmer de nouvelles tâches, etc... Je ne sais pas tout ce que les gens font ici.
    • est-ce que cela devrait être fait dans l'application à la place, ou par un DBO? Cela semble beaucoup plus fiable. Une configuration est "one shot", une application peut être redémarrée et vous réessayez - une meilleure gestion des exceptions.
    • Plus une configuration MSI a une interface graphique très limitée sévèrement limitée dans les événements en raison de la conception MSI globale (les dialogues de Win32 peuvent être produit à partir de L'interface graphique MSI limitée, mais cela demande beaucoup d'efforts - Je ne l'ai fait qu'une fois).
    • une configuration peut fonctionner avec droits élevés , mais c'est juste sur la machine locale. Authentification est toujours nécessaire sur la base de données (à moins que l'Authentification Windows est utilisé).
    • une mise à jour de la base de données est une transaction en soi qui serait exécutée dans le cadre de l'ensemble Programme d'installation de Windows transaction. Il n'est pas évident de savoir comment gérer les erreurs ou ce qui à faire en termes de restauration si l'installation échoue.
    • Inutile de dire que cela peut devenir très complexe à gérer dans votre installation. Il s'agit, à mon avis, d'une tâche de configuration (d'entreprise), et pas seulement d'une tâche de déploiement. commentaires perspicaces très bienvenus sur cette question - je suis sur la corde raide en ce qui concerne les meilleures pratiques.
    • si vous livrez un client / solution de serveur pour vos clients et besoin d'un moyen de mis en place le (côté serveur?) bases de données "fresh" avec par défaut pour aider vos clients "get going" avec votre solution, puis le déploiement de la base de données est certainement logique pour moi. Mais les scripts de mise à jour exécutés dans le cadre d'une installation ciblant des bases de données existantes m'inquiéteraient en termes de fiabilité et de gestion - sans parler de la sécurité.
    • pour les mises à jour des bases de données ministérielles, il semblerait qu'il s'agisse d'un processus approprié. la participation d'un BND serait plus sécuritaire. Ils peuvent exécuter une sauvegarde appropriée avant que les mises à jour ne soient appliquées Et alors le True rollback est en place si des problèmes sont trouvés dans UAT.
  • Installation navigateur ActiveX composants (certificat par le navigateur).
    • installation de fichier CAB signé téléchargé à partir d'une page Web (admin seulement, peut être capturé en tant que MSI pour un déploiement de masse avec des droits élevés).
    • par défaut à installer dans "C:\Windows\Downloaded Installations".
    • des Complications peuvent survenir si la version dans le fichier CAB diffère de la version demandée par la page Web (déclenche des dossiers de conflit à générer pendant que les installations reprennent).
  • mise à Jour et fusionner fichiers XML .
    • avancé parce qu'il est (étonnamment) pas nativement supporté par L'installateur de Windows .
    • pris en charge avec des extensions à la fois par WiX et des outils de déploiement tiers.
  • Configurer et contrôler composants COM+ .
    • Tech note: j'ai échoué à plusieurs reprises pour atteindre correctement avec plusieurs outils tiers. Il semble y avoir un manque global de fonctionnalités requises.
    • I normalement finir par configurer manuellement L'application COM+ et ensuite exporter un MSI de l'outil administratif des services composants qui est ensuite utilisé pour le déploiement.
    • ce MSI exporté n'est pas bon du tout - fragile Si vous essayez d'apporter des modifications. Il contient un non-documenté .fichier apl avec les attributs de l'application et toute DLL dépendante ou les fichiers de données ne sont pas auto-inclus.
    • WiX fournit un support pour COM+ (pas testé du tout par moi). J'espère que c'est bon :-).
    • Juste pour la référence: la Compréhension de l'Application COM+ Installation .
  • Ajouter journaux des événements personnalisés , moniteurs de performances , ajouter règles de pare-feu , et d'autres extensions. Pris en charge par la plupart des outils de déploiement ces jours - ci-y compris WiX. Ces caractéristiques sont pas nativement pris en charge par le moteur Windows Installer.
  • Set-up connexions pour les appareils mobiles et à déployer.
    • peut impliquer" une certaine étrangeté " et des solutions propriétaires bizarres.
    • un dll coutume, natif pourrait être nécessaire pour atteindre le déploiement en douceur (Pocket PC de retour dans la journée - pas sûr de la façon dont les choses fonctionnent ces jours-ci).
  • installer des pilotes de différents types.
    • beaucoup plus facile et plus fiable maintenant pour les pilotes signés qu'avant.
    • supporté par tous les outils tiers et WiX (en utilisant dpinst.exe en arrière-plan).
  • accrochage de l'application aux fonctionnalités avancées du serveur (déployé séparément).
    • "151930920 mise à jour Automatique" systèmes .
    • serveurs de Licence . Les licences flottantes, ou les licences régulières.
    • ressources en Ligne de divers types. Aide, modèles, discussions, SDK, outils de développement, etc...
    • boutiques en Ligne .
    • la plupart du temps, il s'agit simplement de définir un lien ou clé de Registre pour pointer vers les ressources du serveur, mais parfois il est plus complexe.

ajouter des choses très avancées (actions personnalisées)

  • Lorsqu'il n'y a pas de support intégré pour une opération ou une tâche donnée dans Windows Installer lui-même, ou dans l'un des divers outils tiers disponibles, vous devez mettre en œuvre la fonctionnalité vous-même.
  • lorsque vous utilisez Windows Installer, cela implique d'exécuter actions personnalisées de différents types (mécanisme de Windows Installer pour exécuter exécutable, logique d'installation personnalisée pendant l'installation).
  • actions Personnalisées sont construits spécialement exécutables (binaires: dll, exe) et scripts capable de faire modifications avancées pour le système lors de l'installation qui ne sont pas pris en charge par Windows installer nativement ou par l'outil de déploiement en usage (WiX, Installshield, Advanced Installer, etc...).
  • les actions personnalisées qui apportent des modifications au système s'exécutent avec droits élevés de sorte que des modifications peuvent être apportées au système même si l'utilisateur connecté n'a pas de droits d'administrateur. Il n'y a pratiquement aucune limite à ce que ces actions personnalisées peuvent faire. Ils sont armés et dangereux .
  • Les actions personnalisées sont les principales causes d'erreurs de déploiement et d'Échecs .
    • Mains vers le bas. Si une installation MSI échoue, elle est le plus souvent liée à une action personnalisée défaillante.
    • les actions personnalisées sont difficiles à écrire et à déboguer en raison de la complexité de Windows Installer. Ils doivent être utilisés seulement si nécessaire et ils doivent être écrits avec le soutien de roulis complet afin qu'ils soient capables de annuler tous les changements qui ont été appliqués au système en cas de défaillance de l'installateur et doit revenir sur les changements.
    • c'est un travail dur et difficile et les actions personnalisées sont un grand, complexe et sujet à des erreurs question - une boîte de vers.
    • souvent des modifications mineures de la conception de l'application peuvent permettre de remplacer les actions personnalisées par des fonctionnalités MSI standard, ou diverses extensions MSI disponibles dans des outils tiers et dans WiX.
    • les exécutables et les scripts qui fonctionnent correctement par eux-mêmes peuvent échouer lorsqu'ils sont exécutés dans le cadre d'un MSI en raison de l'imitation complexe, de l'élévation et de la conception de l'exécution de Windows Installer. Ce ne sont pas des choses insignifiantes à régler. Une installation MSI est une transaction complexe avec des séquences élevées et usurpées qui est très difficile à traiter.
  • types d'action Personnalisée
    • fenêtres Installer prend en charge les actions personnalisées mises en œuvre en tant que "purpose built, native (win32) executables et dlls ainsi que des scripts tels que JavaScript ou VBScript .
    • certains utilisent même . VB.NET, DTF, etc...) pour exécuter des actions personnalisées-ceci est non recommandé en raison de leur besoin préalable pour le .net Framework. Ces binaires sont appelés" "managed code " et ne peuvent pas fonctionner sans le bon .net framework installé.
    • enfin il y a PowerShell custom actions qui sont à la fois des scrips et du code géré combinés - et ils ne doivent pas être utilisés car ils nécessitent le .net framework.
    • à l'avenir, lorsque le .net framework pourrait être garanti d'exister sur tous les ordinateurs Windows ce code géré pourrait être une option viable pour une utilisation générale, mais comme de maintenant, le consensus semble être que ces actions sont trop risqués et peu fiables.
  • Common, sample custom actions (certaines tâches communes et personnalisées sont fréquemment implémentées sous forme d'actions personnalisées parce qu'elles ne sont pas nativement supportées par Windows Installer mais fréquemment nécessaires).
    • Gérer Windows Shares (créer habituellement).
    • Apply custom ACL permissioning (il y a un support MSI intégré pour cela).
    • modifier privilèges NT .
    • Configure DCOM .
    • Gérer utilisateurs et groupes .
    • Configurer par l'utilisateur Office Addins .
    • Persistent installateur propriétés (pour réparer et réinstaller).
    • Personnalisés et spécifiques à la société conditions de lancement .
    • IP-redirections de Configuration pour IIS
    • Crypter ou obscurcir de contenu pour la sécurité des données
    • etc...
  • la plupart des les fonctionnalités mentionnées ci - dessus sont maintenant disponibles dans le Wix framework sous forme de C++ dll personnalisé - et d'autres outils ont des fonctionnalités similaires, personnalisées. Vous devriez toujours préférer ces solutions toutes faites à vos propres actions personnalisées puisque le rollback est correctement implémenté dans WiX et l'implémentation est bien testée.
  • L'application de permissions ACL personnalisées et la modification des privilèges NT sont considérées " déploiement les anti-modèles " par la plupart des spécialistes du déploiement. Cette exigence indique que la conception de l'application est médiocre (paresseuse).
  • action Personnalisée résumé .
    • écrire une action personnalisée sur votre propre devrait être un événement rare qui est unique et qui n'a pas été fait (mieux) avant.
    • application mineure une nouvelle conception peut souvent éliminer les concepts de déploiement complexes. En fait, presque toujours.
      • par exemple: la configuration de l'application doit se produire lors du premier lancement de l'application, et non lors de la configuration.
      • la configuration doit préparer l'application pour le premier lancement, et effectuer des tâches qui exigent des droits élevés (seulement).
      • l'initialisation des données utilisateur est une chose particulièrement mauvaise à utiliser des scripts de configuration pour effectuer. Tout cela doit être fait dans le séquence de lancement de l'application.
    • vous devez appliquer support de roulis approprié .
      • C'est un travail complexe et ardu.
      • presque toutes les actions personnalisées de script que j'ai vues n'implémentent pas de rollback du tout.
    • vous devez écrire avec dépendances minimales .
      • Utilisez de préférence C++ ou Installscript ou peut-être JavaScript (seulement pour le déploiement interne, d'entreprise à mon avis). Évitez VB Script , et certainement éviter. net code dans c#/DTF ou PowerShell scripts. Il y a une discussion sur la question du code géré. Les experts du MSI comme Chris Painter croient que les actions personnalisées C#/DTF sont prêtes pour les heures de grande écoute, alors que le consensus général semble être d'errer du côté de la prudence et de s'appuyer sur les dlls C++ jusqu'à ce qu'un environnement D'exécution .NET approprié puisse être garanti. Voici une longue "discussion" de cette question: Windows Installer échoue sur Win 10 mais pas Win 7 en utilisant WIX
      • le code robuste est difficile à écrire dans le script . Les Scripts sont fragiles, difficiles à déboguer, manquent de fonctionnalités de langage avancées (en particulier la gestion des erreurs) et sont vulnérables aux anti-virus bloquant.
      • les seuls avantages réels des scripts sont transparent et inspectable et l'ensemble source est intégré dans le fichier MSI (pas de problèmes de contrôle de version). Les équipes d'entreprise qui s'échangent souvent du travail pourraient utiliser JavaScript (il y a aussi beaucoup d'utilisation de scripts VB hérités - mais ce langage est très mauvais pour le traitement des erreurs).
      • code géré a exigences de fonctionnement qui ne peuvent pas être garanties au moment de la rédaction - et c'est la situation depuis très longtemps maintenant.
      • PowerShell les deux code managé et un script. L'éviter. Installshield le supporte comme un type d'action personnalisée. Il reste à voir dans quelle mesure il sera. Je ne l'utiliserais jamais à moins d'y être forcé.
  • et bien plus encore...

complications supplémentaires pour le déploiement

Il ya beaucoup de complications supplémentaires lors de la livraison d'une configuration professionnelle tels que la livraison de configurations dans langues différentes (localisation), branding configurations pour différents revendeurs ( OEM ), en s'assurant que la configuration fonctionne sur tous les systèmes d'exploitation nécessaires en différentes versions linguistiques , livraison de configurations distinctes pour les machines x86 et x64 , livraison d'une "version de visionneuse" réduite de l'application, réalisation de configurations combinées pour les installations client et serveur (peut être exécuté sur le serveur et le client installant des composants différents - non recommandé si vous me demandez - details ), et non à mentionnez le déploiement sur différents appareils embarqués tels que les téléphones, les PC de poche, les téléphones intelligents, etc...

Certain " Deployment Anti-Patters " sont également problématiques à traiter (la réponse liée est une "expérience" et je ne suis pas trop heureux avec elle - un travail en cours, mais il est conçu comme une liste de contrôle pour les développeurs pour leurs efforts de déploiement pour éviter vraiment des problèmes communs). ce sont de mauvaises constructions nécessaires dans les configurations pour faire des applications mal conçues fonctionnent correctement . Ils comprennent des choses telles que l'application d'une autorisation personnalisée (accès en écriture dans des chemins autrement verrouillés, etc...), personnaliser les privilèges de NT (typiquement "exécuter en tant que service" pour un compte d'utilisateur, ou bien pire), ou appliquer une utilisation excessive d'actions personnalisées complexes qui font des changements imprévisibles au système (ceux-ci peuvent vraiment être n'importe quoi et être très dangereux). Gâcher l'installation silencieuse est également un énorme, problème commun - il est terrible pour l'utilisation de votre installation. le déploiement de quantités excessives de données spécifiques à l'utilisateur avec votre configuration peut également être problématique (difficile de contrôler les complications). Et il y a beaucoup d'autres problèmes, plus spécifiques.

" voici un post avec la question globale de la configuration et du déploiement vu dans le contexte plus large de la commercialisation des applications et des ventes.

Faire Votre Propre Déploiement

vous aurez besoin d'un outil ou d'un cadre pour livrer vos propres configurations. Voici une réponse décrivant les différents outils utilisés pour créer les installateurs: quel produit d'installation utiliser? InstallShield, WiX, Wise, Advanced Installer, etc . Toutes les tentatives ont été faites pour rendre les descriptions aussi objectives que possible - décrire l'expérience du monde réel avec des résultats positifs et négatif.

le outils commerciaux décrit dans le lien ci - dessus sont les outils les plus excellents-et ils ont tendance à accélérer les choses avec de bonnes interfaces graphiques et des solutions prêtes à l'emploi pour les besoins communs, mais les développeurs devraient envisager d'essayer WiX - la nouvelle façon de créer des fichiers MSI . Merci de lire ce post pour plus d'information: Windows Installer et la création de WiX (lisez ceci si vous essayez de" trouver vos pieds avec WiX " et voulez comprendre ce que la technologie est tout au sujet et d'où elle vient).

WiX a une courbe d'apprentissage mais est" développeur convivial " à bien des égards. D'une part, il s'agit d'un type de projet dans Visual Studio (une fois que vous l'installez), et il permet à une configuration d'être défini en XML et compilé en MSI comme vous le feriez pour un binaire normal. Cela permet contrôle de source approprié , la ramification et la collaboration. De Plus il est gratuit et open source. Je pense QU'il est correct de recommander un cadre libre, d'autant plus qu'il est bien entretenu. S'attendre à une expérience d'apprentissage. voici quelques suggestions pour un" flying start "avec WiX .

21
répondu Stein Åsmul 2017-09-22 22:58:35

de nombreux programmes utilisent des pilotes graphiques, sonores et autres qui sont fournis et entretenus par des tiers. Dans de nombreux cas, ces pilotes peuvent utiliser le matériel sous-jacent ou d'autres caractéristiques du système D'une manière dont Windows lui-même ne sait rien. Si deux programmes, chacun avec son propre pilote et ignorant l'existence de l'autre, essayaient d'utiliser le même matériel, ils interféreraient probablement avec l'autre de manière imprévisible indésirable (par exemple, l'un pourrait écraser les textures graphiques chargé par les autres). Pour éviter de tels problèmes, Microsoft recommande que les applications installent des pilotes de telle manière que les deux programmes qui ont besoin du même pilote puissent partager la même instance de pilote.

L'approche de Microsoft n'est pas le seul moyen de s'assurer que plusieurs programmes en utilisant le même matériel par le même pilote. Un système pourrait aussi avoir des programmes chargent temporairement des pilotes quand ils commencent, et ont des pilotes déchargent automatiquement quand ils sont faire. La difficulté avec cette approche est que si un programme qui utilise un vieux pilote est lancé, et pendant qu'il exécute un programme qui a besoin d'une nouvelle version de ce pilote est lancé, le nouveau programme ne serait pas en mesure de fonctionner à moins que ou jusqu'à ce que l'ancien programme arrête son pilote et commute à l'aide d'un nouveau. Un tel tracas est probablement inévitable, mais avoir à faire face à de telles choses à chaque fois qu'un programme est lancé est probablement moins gênant que de traiter avec elle une seule fois quand un le programme est installé.

tout cela ayant été dit, bien qu'il puisse être utile de pouvoir installer un programme une fois et d'avoir tous les problèmes de" pilote "pris en charge une fois pour toutes, Il y a aussi quelque chose à dire pour être en mesure de simplement exécuter un programme sans avoir à faire des modifications" permanentes " au système. Il ne devrait pas y avoir d'obstacles particuliers à ce que les programmes puissent utiliser des conducteurs "temporaires" ou permanents, mais je ne connais aucun effort particulier pour faciliter de telles conceptions.

2
répondu supercat 2014-03-29 20:04:47

en plus de copier les fichiers pour vous, l'installateur peut aussi ajouter des entrées de Registre nécessaires au programme (s'il y en a), ajouter des valeurs aux variables d'environnement (chemin), créer des icônes sur le bureau, donc vous n'avez pas à le faire manuellement, etc.

1
répondu Roman Hocke 2014-03-29 16:55:17

pour citer Wikipedia, " L'Installation implique généralement le code étant copié/généré à partir des fichiers d'installation à de nouveaux fichiers sur l'ordinateur local pour un accès plus facile par le système d'exploitation."Pour les programmes simples, il n'est pas nécessaire d'installer quoi que ce soit, mais les plus complexes peuvent mettre à jour, ajouter des liens, etc. automatiquement si installé.

0
répondu Dave Coffman 2014-03-29 16:58:05