У меня есть проект Установки Inno, который я хочу проверить, работает ли приложение на самом деле прежде, чем удалить его. Я попробовал много путей, но все это перестало работать тихо при выполнении в Windows 7. Например, следующий сценарий, который проверяет на notepad.exe
использование процесса psvince.dll
всегда возвраты false
независимо от Блокнота, являющегося рабочим или нет.
Я использовал psvince.dll
в приложении C# для проверки если это работает в соответствии с Windows 7 и это работает без любой проблемы. Таким образом, мое лучшее предположение - то, что установщик не может работать правильно с включенным контролем учётных записей.
[Code]
function IsModuleLoaded(modulename: String): Boolean;
external 'IsModuleLoaded@files:psvince.dll stdcall';
function InitializeSetup(): Boolean;
begin
if(Not IsModuleLoaded('ePub.exe')) then
begin
MsgBox('Application is not running.', mbInformation, MB_OK);
Result := true;
end
else
begin
MsgBox('Application is already running. Close it before uninstalling.', mbInformation, MB_OK);
Result := false;
end
end;
Используете ли вы Unicode Inno Setup? Если да, то должно быть написано
function IsModuleLoaded(modulename: AnsiString): Boolean;
, поскольку psvince.dll не является библиотекой Unicode.
Также в примере проверяется наличие epub.exe, а не notepad.exe.