Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: Inno Setup. Прочие вопросы
Показать сообщение отдельно

Аватара для Vanadiy777

Ветеран


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

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


Цитата EdMSL:
Но как сделать это до установки? Т.е. надо что-то вроде [InstallDelete], но для команд. Писать свой скрипт? Если да, то может есть уже готовые примеры, которые выполняются до установки. »
EdMSL,
Можно так попробовать:
Скрытый текст
Код: Выделить весь код
[_code]
function IsProcessRunning(FileName: String): Boolean;
var
  objSWbemLocator, objSWbemServices: Variant;
begin
  try
    objSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
  except
    ShowExceptionMessage;
    Exit;
  end;
  objSWbemServices := objSWbemLocator.ConnectServer();
  objSWbemServices.Security_.ImpersonationLevel := 3;
  Result := (objSWbemServices.ExecQuery('SELECT * FROM Win32_Process WHERE Name="' + FileName + '"').Count > 0);
end;

procedure CurStepChanged(CurStep: TSetupStep);
var
i: integer;

begin
 if CurStep = ssInstall then
  begin
   if IsProcessRunning('Steam.exe') then
    Exec(ExpandConstant('{sys}\taskkill.exe'), ' /F /IM Steam.exe', '', SW_HIDE, ewWaitUntilTerminated, i);
  end;
end;

Перед установкой проверяет, запущен ли Steam.exe, если запущен - то закрывает принудительно и продолжается установка.

Ну, или так:
Скрытый текст
Код: Выделить весь код
[Files]
Source: ISTask.dll; DestDir: {app}; Flags: dontcopy

[_Code]
function KillTask(ExeFileName: string): Integer;
external 'KillTask@files:ISTask.dll stdcall delayload';

function RunTask(FileName: string; bFullpath: Boolean): Boolean;
external 'RunTask@files:ISTask.dll stdcall delayload';

function InitializeSetup(): Boolean;
begin
  If RunTask('Steam.exe', false) then
    begin
      if MsgBox('Программа Steam используется. Закрыть и продолжить установку?', mbInformation, mb_YesNo) = idYes then
        begin
          KillTask('Steam.exe');
          Result:= True;
        end else
          Exit;
    end;
Result:=True;
end;

Только тогда ISTask.dll будет нужен...

-------
Подписываюсь крестиком... Но кнопочку "Полезное сообщение" все равно нажмите...


Последний раз редактировалось Vanadiy777, 08-10-2022 в 18:42.

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:44, 08-10-2022 | #643

Название темы: Inno Setup. Прочие вопросы