Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для boss911

Alien


Сообщения: 4262
Благодарности: 1030

Профиль | Отправить PM | Цитировать


Цитата Chudmin:
Есть программа "Моя_прога" и есть инсталятор к ней "Моя_прога_Setup", так вот, если у пользователя уже установлена "Моя_прога" и запущена, а в это время он запускает (при работающей "Моя_прога") инсталятор "Моя_прога_Setup", то инсталятор сразу же, "молчком", закрывает программу "Моя_прога". »
Предложу использовать библиотеку KillProc.dll для Inno Setup.
Код: Выделить весь код
[Files]
Source: C:\MyProg\MyProg.exe; DestDir: {app}; Flags: ignoreversion; BeforeInstall: KillProc
Source: compiler:Libraries\KillProc.dll; DestDir: {tmp}; Flags: dontcopy

[Code]
function KillProcByExeName(ProcessName: PAnsiChar; ExcludeID: Cardinal): Integer; external 'KillProcByExeName@files:KillProc.dll stdcall';

procedure KillProc;
begin
  KillProcByExeName('MyProg.exe', 0);
end;
Если в момент установки будет запущен процесс с именем MyProg.exe, то перед копированием файла MyProg.exe, данный процесс будет принудительно завершен. Метод старый, возможно уже есть другие решения, с проверкой ID процесса.

Правильно или не правильно, но если MyProg.exe не служба и нет ключа командной строки для завершения работы, а процесс без вопросов необходимо завершить и по другому ни как, то это единственный вариант, и уже закрываешь глаза на то, что это не правильно. ИМХО.

Отправлено: 16:00, 22-10-2018 | #109