10
votes

WIX "Upgrade majeur" n'installe pas complètement l'application sur Downgrade

Actuellement, toutes les mises à niveau fonctionnent bien chaque fois que vous mettez à jour un nouveau numéro de version, mais je reçois un comportement étrange lors de la réduction. Il semble que cela désinstaller la version existante puis installer partiellement la version que j'essaye d'installer, l'EXE principal n'existe pas encore dans l'emplacement cible, mais des raccourcis annoncés sont créés. Lorsque le raccourci annoncé est ouvert, il finira l'installation (vraisemblablement faire une réparation), puis il va courir bien.

Quelqu'un a-t-il des idées pourquoi cela se produit?

Mon bloc de mise à niveau ressemble à ceci:

(L'ignoreremoveFailure était une tentative de résoudre ce problème, mais il ne semble rien faire)

Dans mon Installexecuesequence, j'ai

aussi j'ai ID de produit = "*" et ID de package = "*"

La raison pour laquelle la dégradation est nécessaire est que l'application client doit exécuter la même version que le serveur pour assurer la compatibilité, et l'ensemble du processus doit être automatisé afin que les versions client / serveur ne correspondent pas à Signin. L'utilisateur peut simplement cliquer sur "Oui" et la version appropriée est téléchargée, installée et démarrée. Cela fonctionne jusqu'à présent pour les mises à niveau, mais pour les rétrogradations, une étape supplémentaire non intuitive est nécessaire pour relancer l'application manuellement, puis voir une boîte de dialogue Windows Installer avant son lancement.

Le résultat final est que, quelle que soit la mise à niveau ou la dégradation, la version actuelle doit être complètement désinstallée et la version téléchargée entièrement installée, donc s'il y a une autre façon d'accomplir cela, ce sera également une bonne réponse.


1 commentaires

J'ai des problèmes sans fin avec cela même aujourd'hui. WIX a ajouté un nouvel élément "MajorupGrade" qui était supposé rendre les choses plus difficiles à se tromper. Nous utilisons ceci maintenant, mais même ainsi, les dynamomes ont le même problème qu'avant. La différence est que cela supprime quelques coupables: (1) l'installation InstallexecuseSequence (2) de l'élément de mise à niveau.


5 Réponses :


2
votes

Permettre aux révisions à la baisse n'est pas considérée comme la meilleure pratique, au moins en partie parce qu'il est si difficile de tester toutes les combinaisons que vous allez soutenir pendant qu'il est encore possible de les corriger. Est-il pas possible de détecter et de bloquer ce cas, au lieu (suggérer la supprimer la version plus récente en premier), et ne prennent en charge automatiquement aller de l'avant?

Si vous devez obtenir celui-ci travail, est-il quelque chose dans un journal détaillé pour le déclassement d'installer (ou pour la réparation - vous devez définir la politique forestière de la machine pour obtenir celui-ci créé) qui confirme la mise à jour majeure ( Je regardais près FindRelatedProducts) ou explique pourquoi le composant pour votre exe n'est pas installé? Certainement vérifier pour toutes les lignes de log avec SELMGR car ils pourraient expliquer cela dans un scénario de mise à niveau mineur.

Depuis un raccourci annoncé est en place, il semble que le composant a été annoncé à la place. Cela pourrait indiquer des règles composants violations dans une mise à jour mineure (en particulier, l'addition d'un composant dans une version plus récente à la recherche comme la suppression dans votre ancienne version - voir de bruyères commentaire ) mais il semble que le produit / @ id = '*' devrait forcer une mise à jour majeure. < / p>

Vous pouvez également essayer de travailler dans un exemple de projet, à partir d'une version de base qui a une seule caractéristique, seul composant, et seul fichier avec raccourci. Le cas échéant, ajouter un autre composant et le fichier à la version améliorée; sinon incrémenter juste les versions de fichiers. Ensuite, essayez votre scénario inverse. Lentement ajouter des choses jusqu'à ce que vous trouviez votre coupable. Alors espérons que quelque chose de ce que vous pouvez retirer de votre produit réel, ou peut autrement être contournées.


0 commentaires

1
votes

Ma suggestion est un peu sur le côté "Faites du travail" - Vous pouvez essayer une action personnalisée de réparation silencieuse en cas de déclassement.


4 commentaires

Je n'ai pas pu trouver comment planifier une réparation comme une action personnalisée. Avez-vous des liens qui décrivent cela?


Je pensais à quelque chose comme gérer une action personnalisée avec Msiexec et en utilisant votre MSI comme source (MSIEXEC / FA ProD.MSI / QN)


Je ne suis pas sûr que vous puissiez avoir plus d'une instance Windows Installer fonctionnant à la fois. Dans ce cas, il y aurait deux. Un exécutant de l'intérieur d'un autre.


Hmm ... maintenant que je pense à cela .. Le MSI n'est jamais dirigé directement par l'ENDUSER, il est toujours programmé par une sorte de bootstrapper afin que je puisse faire ce travail, je pense. Va essayer de marquer comme accepté si c'est le cas.



0
votes

Que se passe-t-il si vous utilisez deux éléments "UmenVersion"?

<UpgradeVersion Maximum="CurrentVersion" Property="PREVIOUSVERSIONSINSTALLED" IncludeMaximum="no" />
<UpgradeVersion Minimum="CurrentVersion" Property="PREVIOUSVERSIONSINSTALLED" IncludeMinimum="no" />


0 commentaires

1
votes

Comment avez-vous commandé les opérations dans votre Installexecuesequence?

Si vous effectuez la désinstallation après l'installation (qui vous donne la meilleure performance de mise à niveau), vous pouvez voir des problèmes si les versions de fichier changent de versions inférieures; qui pourrait être le cas sur vos dégradés.

Windows Installer ne écrasera pas les versions plus anciennes avec des versions plus récentes, sauf demande explicite.

La réorganisation de la désinstallation avant d'installer devrait aider si ceci est le cas.


1 commentaires

La désinstallation est commandée avant l'installation. Avait ce problème auparavant avec des mises à niveau jusqu'à ce que je la reproduise. Maintenant, cela fonctionne avec des mises à niveau, mais a toujours des problèmes d'abattage



5
votes

C'est ce qui a fonctionné pour moi: xxx


1 commentaires

Cela devrait être la réponse acceptée. Cela a également travaillé pour moi aussi, bien que j'ai utilisé des "DMU" au lieu de "amus" pour écraser uniquement les fichiers si la version est différente. Liste complète des drapeaux ici: msdn.microsoft.com/en-us/library/...