2008-09-26 10 views
1

J'ai un package Windows Installer MSI qui installe les pilotes qui nécessitent parfois un redémarrage avant de pouvoir être mis à niveau; les pilotes sont installés par une action personnalisée différée après WriteRegistryValues. Lorsqu'un redémarrage est nécessaire, il y a une annulation et l'utilisateur est invité à redémarrer et à réexécuter l'installation. Dans la classe InstallExecuteSequence, l'action RemoveExistingProducts se situe entre InstallValidate et InstallInitialize. Par conséquent, lorsqu'une mise à niveau indique qu'elle doit être redémarrée, le package précédent a été supprimé. Donc, quand un redémarrage est nécessaire, après la restauration et le message d'erreur disant "redémarrer et relancer", notre logiciel n'est plus installé. Si l'utilisateur redémarre et répète l'installation, les choses fonctionnent bien.Windows Installer - mise à niveau de reprise après redémarrage

-je besoin d'automatiser le redémarrage et la reprise de l'installation, afin que l'utilisateur n'a pas à faire quoi que ce soit (sauf accord à la reprise du cours.)

Une commande écrite dans la clé RunOnce du Registre peut fonctionner l'installation à nouveau après le redémarrage, mais je pense qu'il sera difficile de conditionner ForceReboot sur ce qui se passe dans l'action personnalisée différée que le pilote installe. Aussi peut-être difficile de décider quoi faire dans l'installation reprise.

Des conseils sur les meilleures pratiques ou des indications sur des problèmes potentiels seront les bienvenus. RemoveExistingProducts avant InstallInitialize ou après InstallFinalize ne placera pas l'action dans le script d'audit du nouveau produit, de sorte que vous avez dit que l'ancien produit est supprimé avant que la mise à niveau soit terminée.

Répondre

2

Ainsi, vous pourriez vouloir essayer de mettre l'exécution RemoveExisitngProducts entre InstallInitialize et InstallFinalize, de cette façon, il est dans la partie de script d'audit, donc il va suivre, redémarrer et reprendre.

un regard sur les propriétés de redémarrage du système here