0

J'ai un installateur dont l'installation initiale sera effectuée par un humain, mais les mises à jour doivent être effectuées automatiquement.Est-ce que WiX peut faire autre chose que des fichiers RollBack et Log si le programme d'installation échoue? Comme redémarrer?

L'échec de l'installateur de manutention est un problème. Je dois planifier l'échec de l'installateur: j'utilise l'élément < RollbackBoundary /> dans le Bootstrapper pour obtenir un bon état, puis j'utilise à la fois le journal WiX et un journal de mes propres moyens pour documenter l'échec.

Cependant, ce n'est pas assez bon.

Il existe un programme (appelons-le X.exe). Si-et en cas d'échec du programme d'installation, je dois revenir à l'état que l'installateur était avant le programme d'installation a commencé et:

  • Restart X.exe ou
  • Redémarrez la machine cible de telle sorte que X.exe peut démarrer (j'installe X.exe dans le dossier de démarrage de l'ordinateur cible, c'est aussi ce que je fais pour une installation réussie - redémarrer la machine cible).
  • Résolvez le problème de manière encore imprévue.

Existe-t-il autre chose que la journalisation que WiX peut faire pour une défaillance de l'installateur? Est-ce qu'il y a une condition que je pourrais attraper, ou ... n'importe quoi?

J'ai appris WiX à travers le livre fantastique WiX 3.6: A Developer's Guide to Windows Installer XML (par Nick Ramirez), mais je ne trouve rien pour résoudre mon problème là-bas, je ne peux pas non plus le trouver sur les interwebs. J'espère qu'il y aura quelque chose d'évident que j'ai manqué. Est-ce que quelqu'un sait comment faire face à l'échec de l'installateur en plus de les enregistrer et de l'appeler un jour?


Sur la base de l'absence de réponses et le manque de trouver la réponse à ma question dans les ressources existantes, je me rends compte que je demande simplement Windows Installer en faire trop.

J'espérais qu'il y aurait un moyen de faire quelque chose comme:

if (installation fails) 
{ 
    do something (besides rollback and logging) 
} 

Je me demande si d'autres programmes d'installation offrent des fonctionnalités comme ça? Ou s'il y a un autre moyen d'obtenir une machine cible pour faire quelque chose si le programme d'installation échoue?

+0

Les installations MSI sont transactionnelles - elles fonctionnent complètement ou échouent complètement, donc votre commentaire "Si-et-quand l'installateur échoue, je dois soit revenir à l'état l'installateur était avant que l'installateur ne démarre "ne s'applique pas. La machine sera dans l'état où elle était avant l'installation, sous réserve d'actions personnalisées ayant des actions de restauration, etc. Les installations MSI utilisent également la restauration du système pour prendre des photos du système. – PhilDW

+0

Ah, c'est le "soit" dans le commentaire. Cela rend la phrase entière insensée. Je vais retirer ça ... – Bob

+0

La phrase a beaucoup plus de sens maintenant - je réalise que les MSI sont transactionnelles. Je veux faire quelque chose si le MSI échoue. – Bob

Répondre

0

Il existe, en théorie, mais toute la zone de rollback est remplie de mises en garde. Considérez la boîte de dialogue «Échec de l'installation» et en quoi elle diffère d'un cas de réussite: vous pouvez exécuter une action personnalisée sur cette boîte de dialogue. Mais c'est seulement s'il y a une interface utilisateur. Alors peut-être faire des choses de l'action de restauration. Mais que faire si Rollbacks are disabled? Votre seule solution modérément robuste sera en dehors du package Windows Installer. Par conséquent, dans votre X.exe, assurez-vous de capturer le code de retour afin de pouvoir identifier un succès, une annulation, un échec et divers états requis de redémarrage. Si c'est un échec, alors pensez à appliquer votre correctif externe (votre redémarrage, ou autre). Si vous n'avez pas écrit X.exe, envisagez de le faire ou écrivez quelque chose qui appellera X.exe.

Mais le commentaire de PhilDW en est vraiment au cœur: le redémarrage en cas d'échec n'est pas un comportement attendu pour un programme d'installation d'application. (Les redémarrages par les installateurs d'application en général sont déconseillés.)