2010-01-29 3 views
0

J'ai donc un projet Wix 3.0 qui installe un module de code natif IIS7. Lors de la désinstallation, je voudrais pouvoir arrêter les pools d'applications IIS7 avant de supprimer le fichier, de sorte qu'un redémarrage n'est pas nécessaire.Comment puis-je exécuter une action personnalisée en tant qu'utilisateur système avec Wix 3.0 avant de vérifier si des fichiers sont en cours d'utilisation?

J'utilise l'utilitaire appcmd de fermer les piscines d'applications dans un élément CustomAction, mais lorsque je tente de faire une désinstallation je reçois cette erreur avant que le CustomAction est jamais invoqué:

La configuration doit mettre à jour fichiers ou services qui ne peuvent pas être mis à jour pendant que le système est en cours d'exécution. Si vous choisissez pour continuer, un redémarrage est requis pour terminer la configuration.

J'ai la « Après = « InstallInitialize » » propriété situé sur la CustomAction, parce que la documentation indique que toute action différée/non personnifié personnalisé doit venir entre InstallInitialize et InstallFinalize.

Existe-t-il un moyen d'exécuter une action personnalisée avant que cette vérification ne soit effectuée pour les fichiers en cours d'utilisation? Ou désactiver cette vérification pour un fichier donné, ou faire la vérification se produire plus tard dans la séquence?

Répondre

1

Oui, vous pouvez spécifier l'ordre d'exécution des actions en modifiant la colonne Séquence dans the InstallExecuteSequence table dans le fichier MSI.

Get the ORCA tool pour examiner le fichier MSI pour voir ce que je veux dire, et use a Javascript script to modify the MSI as appropriate.

alt text http://i48.tinypic.com/29vxgco.jpg

+0

Merci pour l'info. J'ai effectivement trouvé que le problème que je rencontrais ne se produisait que lorsque j'ai compilé le projet WiX en mode Debug, mais cela semble être une bonne réponse à ma question et sera utile. – Gerald