Désinstaller à partir du Panneau de configuration est différent de supprimer de.msi

est-ce qu'il y a une différence entre désinstaller une application avec WiX basé .msi du Panneau de contrôle et du .msi lui-même?

S'il y a quoi?

je demande à cause de la raison suivante:

La différence est la suivante: mon .msi stocke certains fichiers dans %PROGRAMDATA%. Si je désinstalle du Panneau de configuration les fichiers il obtenir désinstallé (il semble que le .msi garde une trace de ceux (ils sont définis comme des composants)), mais quand j'ai ouvert ma .msi et essayer de désinstaller (j'ai un dialogue de maintenance) ces fichiers ne sont pas supprimés.

une autre différence est: j'ai aussi une Action personnalisée pour arrêter mon Application si elle est en cours d'exécution qui est appelée après=" AppSearch"dans la InstallUISequence et avant=" CostFinalize " dans la InstallExecuteSequence mais en enlevant de la .msi il n'est pas appelé. Seulement une boîte de dialogue montre qu'il y a des fichiers à être supprimé, mais sont usedbut certains processus et quand je lui dis d'arrêter, il ne le fait pas.

4
demandé sur malkoto1 2015-04-16 17:17:59

2 réponses

la" discussion " suivante a un peu dérapé. Mais je vais le laisser ici comme une explication pour les gens qui recherchent des différences vécues entre le mode silencieux et le mode interactif installe.

Oui , la réponse courte est que vous pouvez effectivement voir des comportements d'installation ou de désinstallation différents selon la façon dont vous invoquez l'installation .

la plupart du temps pour faire avec la façon dont un MSI peut fonctionner avec différents niveaux d'interface utilisateur , et cela provoque la totalité séquence d'interface utilisateur ( InstallUISequence ) dans le MSI soit pour être lancé ou sauté entièrement (installation silencieuse). Une fois sautées, toutes les actions personnalisées définies uniquement dans L'InstallUISequence ne seront pas exécutées du tout. Si le MSI est bien conçu , ce n'est pas un problème puisque l'interface utilisateur personnalisé les actions s'exécutent en mode immédiat et ne devraient jamais apporter de changements au système - ils devraient simplement s'informer des données de l'utilisateur et des paramètres, de l'état du système ou aider l'utilisateur à entrer les données appropriées pour l'installation. Si la MSI n'est pas bien conçu et des modifications sont apportées au système de l'interface utilisateur, l'installation sera incomplète lors de l'exécution en mode silencieux. il s'agit d'une grave erreur de conception MSI qui devient d'autant plus grave lorsque vous réalisé que toutes les grandes entreprises déploient des logiciels silencieusement. j'ai vu de telles erreurs à plusieurs reprises lors du reconditionnement d'applications d'entreprise. Ce n'est pas un vote de confiance pour le logiciel, aussi bon soit-il. Les problèmes étranges et imprévisibles sont liés à la surface.

par conséquent, la InstallExecuteSequence (qui est la seule qui fonctionne lorsque la configuration est installée silencieusement) devrait avoir toutes les actions personnalisées nécessaires qui faire des changements de système insérés là pour qu'un MSI soit correctement conçu. Comme déjà indiqué, les actions personnalisées qui n'existent que dans la séquence de l'interface utilisateur doivent traiter de l'obtention de valeurs et de paramètres de l'utilisateur, alors que ces valeurs doivent être définies et définies par ligne de commande ou définies dans les transformées pour une installation silencieuse.

certaines combinaisons impaires et erronées de conditions d'action personnalisées peuvent aussi causer des différences entre les conditions interactives et silencieuses installe dans des circonstances particulières. Et finalement, la mise en place d'actions personnalisées Après InstallFinalize dans la suite InstallExecuteSequence peut faire échouer les actions lorsqu'elles sont exécutées en silence. Il y a certainement d'autres problèmes potentiels.

en résumé, si vous voyez une différence dans le comportement d'installation basée sur le niveau de l'interface utilisateur, votre MSI contient un conception sérieuse-défaut . Vous devez toujours vous assurer que votre MSI peut être exécuté en silence avec l'équivalent résultat de façon interactive. Et comme nous l'avons déjà dit, les grandes entreprises n'exécutent jamais les installations de façon interactive puisqu'elles font sortir les logiciels par l'intermédiaire de systèmes de gestion de logiciels comme la SCCM.

  • Il y a 4 INTERFACE MSI niveaux allant de entièrement silencieuse à entièrement interactif :

    • INSTALLUILEVEL_NONE = 2, (totally silent)
    • INSTALLUILEVEL_BASIC = 3, (barres de progression et manipulation simple des erreurs)
    • INSTALLUILEVEL_REDUCED = 4, (authored UI, no wizards)
    • INSTALLUILEVEL_FULL = 5 (full UI)
  • le point important est que pour UILevel 2 et 3 L'InstallUISequence est sauté .
  • Il y a un MSI propriété UILevel la tenue de l'interface graphique de niveau valeur 2, 3, 4 ou 5. Vérifiez cette propriété si votre action personnalisée doit prendre en compte le type d'interface utilisateur. Ceci est évidemment très important pour les installations totalement silencieuses qui ne devraient jamais montrer de dialogues.

  • lorsque vous faites un clic droit sur un MSI et sélectionnez désinstallation, vous exécutez généralement UILevel 3 (UI de base avec barre de progression). Cela signifie que L'Installluisequence est sautée.

  • quand vous désinstaller à partir D'Ajouter / Supprimer des programmes L'UILevel normal est également 3 - interface utilisateur de base. Cela signifie que L'Installluisequence est également sauté.
  • si vous double-cliquez sur le MSI et exécutez désinstaller, votre niveau GUI est 5 - GUI complet. La même chose se produit si vous sélectionnez "Modifier" dans Ajouter / Supprimer des programmes.

en résumé, il est possible que des bogues se produisent dans un seul des modes (silencieux / non silencieux) parce que l'utilisateur du MSI la séquence d'interface est sautée avec toutes ses actions personnalisées pour certains niveaux d'interface utilisateur. En d'autres termes, un produit pourrait fonctionner lorsqu'il est installé de manière interactive et échouer lorsqu'il est installé de manière silencieuse (ou vice versa), si le MSI est mal conçu.

il est également possible de conditionner des actions personnalisées dans la séquence d'installation principale MSI basée par erreur sur cette fonctionnalité UILevel de sorte que les résultats diffèrent en fonction du mode d'installation. J'ai vu des gens engendrer des dialogues à partir du code les actions personnalisées placées dans la séquence d'installation principale (où aucune interactivité n'est permise) et ensuite utiliser les contrôles UILevel pour supprimer la boîte de dialogue en mode installation silencieuse (ou ils oublient cela aussi, en déclenchant une boîte de dialogue modale cachée qui arrête l'installation morte lors de l'exécution en mode silence). Ces constructions étranges provoquent un comportement d'installation inattendu basé sur la façon dont l'installation est déclenchée et exécutée.

Si c'est pas une réponse à ce que vous avez demandé, une conclusion finale de tout cela est que si votre logiciel est destiné aux grandes entreprises, vous ne devriez pas gaspiller vos efforts de conception sur une interface graphique avancée pour votre installation car il est probable qu'il ne sera jamais utilisé pour des scénarios de déploiement à grande échelle. Vous devriez plutôt paramétrer votre installateur avec propriétés publiques qui peut être réglé à la ligne de commande ou via un transformer ainsi que votre installateur peut être contrôlée facilement sans l'exécuter de manière interactive. Voir ce billet: comment mieux utiliser les fichiers MSI .

étant donné que j'ai dépassé de loin votre question, je dois également noter que certains installateurs avancés destinés à installations de serveur peuvent (avec modération) bénéficier d'une bonne interface graphique pour aider les gens à obtenir rapidement votre logiciel serveur installé et testé. Ces installateurs ont tendance à se mêler des fonctionnalités très avancées telles que IIS, MS SQL, AD, etc... et une certaine interactivité pourrait être souhaitable pour les administrateurs de système bien informés. Mais comme le dicton dit "la plupart des choses peuvent être par défaut" et de bons paramètres par défaut sont généralement plus faciles à installer et à tester pour les gens, qu'ils soient avertis ou non. Beaucoup de grandes entreprises exécuter de grandes fermes de virtuals de serveur de nos jours (un serveur virtuel par cas d'utilisation), donc même les installations de serveur ont tendance à obtenir automatisé pour le déploiement à grande échelle, puis un bon installateur paramétré avec des propriétés publiques à régler est apprécié. plus petites entreprises peuvent aussi avoir des virtuoses de serveur (rendant les tests faciles), mais ils sont susceptibles d'installer votre installation de façon interactive accepter ce qui est par défaut sont là - bas-au moins c'est mon impression.

10
répondu Stein Åsmul 2018-01-06 10:57:57

il n'y a pas de différence pratique entre un clic droit sur un MSI pour le désinstaller et l'utilisation du panneau de configuration pour le désinstaller. Les deux se traduisent par un UI minimal (pas totalement silencieux, montre la barre de progression) désinstallation, et demandera une élévation si nécessaire.

si vous avez une boîte de dialogue mode maintenance dans votre configuration, alors vous pouvez avoir un chemin légèrement différent - vous pouvez afficher une boîte de dialogue qui offre de changer les fonctionnalités, réparer, ou désinstaller. Qui pourraient entraîner une différence quelque part.

S'il y a un code quelque part qui change quelque chose, alors qui sait? Une désinstallation à partir d'une boîte de dialogue peut choisir de supprimer le bouton Annuler, comme un hasard.

1
répondu PhilDW 2015-04-16 17:04:23