Вы можете подключить функцию function InitializeUninstall(): Boolean;
или procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
.
Это запускается до запуска деинсталляции, вы можете поставить здесь галочку, чтобы убедиться, что приложение не запущено. Используя FindWindowByClassName
или FindWindowByWindowsName
Если вы обнаружите, что он работает, вы можете предложить пользователю закрыть приложение.
Когда пользователь говорит, что он закрыт, вы можете позвонить Sleep()
, чтобы у него было достаточно времени для закрытия, прежде чем проверять снова, чтобы убедиться, что приложение действительно закрыто.
Если ваше приложение создает Mutex
во время работы, вы можете использовать CheckFormMutexes
в качестве альтернативы FindWindowXXX
звонкам.
В этом вопросе рассматривается другая опция: Inno Setup Проверка работоспособности процесса
Независимо от метода обнаружения, вызов Sleep
для ожидания решит эту проблему.