2010-05-15 8 views
1

Je sais quand je mets quelque chose dans le journal en utilisant ::MsiProcessMessage(hModule, INSTALLMESSAGE(INSTALLMESSAGE_INFO), ...); que je peux vérifier si la valeur de retour est IDCANCEL et retourner ERROR_INSTALL_USEREXIT au programme d'installation de Windows.Comment vérifier le bouton Annuler dans une action personnalisée sans rien faire

Comment vérifier cette valeur de retour sans avoir à ajouter quelque chose dans le journal ou modifier la barre de progression?

Répondre

0

Je crois que l'appel que vous décrivez placera le message d'information dans le journal. Mais à part ça, pourquoi devriez-vous mettre quelque chose dans le journal ou modifier la barre de progression? Si votre action prend beaucoup de temps, elle devrait signaler les progrès. S'il est court et que vous n'appelez jamais MsiProcessMesssage, Windows Installer gèrera l'annulation immédiatement après. Le seul cas de problème est si vous appelez MsiProcessMessage et avalez une annulation sans le signaler.

+0

En ce moment, j'essaye de déboguer une CA qui pourrait boucle infinie dans certaines conditions. Donc, je veux être en mesure de vérifier les annulations dans le code qui pourrait boucle infinie, sans rien faire d'autre. –

+0

Ah. Alors, que diriez-vous appeler MsiProcessMessage avec INSTALLMESSAGE_PROGRESS et un enregistrement {2, 0, x, x} (augmentation de l'incrément de 0 ticks)? –

+0

Bonne prise. Je n'y ai pas pensé. J'ai fini par le déboguer de toute façon, mais j'en aurai besoin pour d'autres choses. –