Просто убедитесь, что первое, что делает установка или удаление, - это удаление всех файлов xyz.tmp в% TEMP (или любом другом каталоге для записи приложения) перед выполнением цикла for. Никаких плагинов не требуется.
!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