Определите, ожидает ли перезапуск ДО установки - PullRequest
0 голосов
/ 17 октября 2019

Есть ли способ предотвратить установку, если перезагрузка / перезапуск уже находится в состоянии ожидания / требуется?

Наша установка устанавливает SQL Server Express и иногда отказывается делать это, если в системе есть ожидающий перезапуск,Может ли Inno Setup обнаружить это условие, чтобы я мог попросить пользователя перезагрузиться перед установкой нашего программного обеспечения?

Я знаю о MakePendingFileRenameOperationsChecksum, но обычно упоминается, чтобы определить, появилось ли условие перезагрузки В ТЕЧЕНИЕнастройка. Можно ли использовать ДО?

1 Ответ

0 голосов
/ 18 октября 2019

Если вы хотите определить, существует ли ожидающее переименование, требующее перезапуска, запросите PendingFileRenameOperations значение реестра.

См. Также Как узнать, запрошен ли MSI, который я только что установил,Перезагрузка Windows?

function IsRestartPending: Boolean;
var
  S: string;
begin
  if RegQueryMultiStringValue(
       HKLM, 'SYSTEM\CurrentControlSet\Control\Session Manager',
       'PendingFileRenameOperations', S) then
  begin
    Log(Format('PendingFileRenameOperations value exists with value [%s]', [S]));
    Result := (Trim(S) <> ''); { This additional check is probably not needed }
  end
    else
  begin
    Log('PendingFileRenameOperations value does not exist');
    Result := False;
  end;
end;

function InitializeSetup(): Boolean;
begin
  if IsRestartPending then
  begin
    MsgBox('Restart your machine please', mbError, MB_OK);
    Result := False;
    Exit;
  end;

  Result := True;
end;
...