2010-08-17 10 views
1

Existe-t-il un moyen de déterminer si une installation active s'exécute en C#? Par exemple, parfois, si vous lancez 2 MSI (ou setup.exes) à la fois, l'un d'entre eux dira qu'il y a déjà une installation en cours. Y a-t-il un moyen de faire cela en C#? Dites, une clé de registre à réinitialisation automatique (ce système se réinitialise) ou un mutex?Vérifiez l'installation en cours en C#

+1

Vous pouvez utiliser les API MSI pour cela. Si vous ne le faites pas, il n'y a aucune garantie que votre hack de registre/mutex ne se brise pas. Je crois que le wrapper le plus propre pour les API d'installation de Windows est disponible sur: http://wix.sourceforge.net/. –

Répondre

1

Un mutex est le chemin à parcourir.

bool isFirst; 
Mutex m = new Mutex(false, "MyMutex", out isFirst); 

Si isFirst est faux, un autre processus est en cours d'exécution. Quant au nom si vous voulez que cela vérifie plusieurs sessions (sessions terminales), changez le code pour quelque chose comme.

Mutex m = new Mutex(false, "Global\\MyMutex", out isFirst); 
+0

à droite, mais que se passe-t-il si je veux également voir si le programme d'installation de Windows est en cours d'exécution? – Crypton