8
votes

Vérification si l'application est en cours d'exécution dans la SNS avant de la désinstaller

Je suis nouveau dans la SNS, et j'ai besoin de savoir que dans le désinstallateur, comment je peux vérifier si l'application (qui est en C ++) est en cours d'exécution et fermez-la avant la désinstallation.


0 commentaires

4 Réponses :


2
votes

Selon l'application, vous avez quelques choix:

  • Si votre application a une fenêtre avec un nom de classe un peu unique, vous pouvez utiliser FINTWINDOW
  • Si votre application crée un objet nemel nommé (mutex, etc.), vous pouvez le vérifier en appelant l'API Native Win32 correcte avec le plug-in système
  • Utilisez un plug-in 3ème partie comme FindProcdll

3 commentaires

FindProcdll ne fonctionnera pas avec la dernière version de la SNSI à partir de ce commentaire, 2.46, publié en 2009.


Une autre option est la suivante: EXECKWAIT Taskkill / im programme_Name / f


+1 pour FindWindow , car il est léger (pas de plugin, pas de syscalls directs ) et "fonctionne juste" pour des cas simples.



7
votes

Utilisez le plug-in NSProcess. Téléchargez ici -> NSProcess
Comment l'utiliser? Aussi simple que: xxx

où app_exe est le nom de votre application ...

Le téléchargement vous dira également comment l'utiliser ... :)


1 commentaires

Qu'est-ce que $ R4 signifie?



11
votes

Voici une version légèrement plus amicale pour utiliser NSProcess qui demande à l'application de fermer plutôt que de le mettre fin (la réponse de Owen) < Pré> xxx


0 commentaires

1
votes

Assurez-vous simplement que la première chose à laquelle installer ou désinstaller est de supprimer tous les fichiers XYZ.TMP en% Temp (ou tout autre répertoire inscriptible de l'application) avant la course de boucle ci-dessous. Pas de plug-ins requis.

!macro IsRunning 
  ExecWait "cmd /c for /f $\"tokens=1,2$\" %i in ('tasklist') do (if /i %i EQU xyz.exe fsutil file createnew $TEMP\xyz.tmp 0)"
  IfFileExists $TEMP\xyz.tmp 0 notRunning
   ;we have atleast one main window active
   MessageBox MB_OK|MB_ICONEXCLAMATION "XYZ is running. Please close all instances and retry." /SD IDOK
   Abort
  notRunning:
!macroEnd


0 commentaires