В моей настройке я должен установить внешний драйвер.
В некоторых редких случаях установка завершается неудачно, и я должен удалить старый драйвер и перезагрузиться, прежде чем я смогу повторить попытку.
Я устанавливаю внешний драйверДрайвер в ssPostInstall
.
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
begin
if Exec(ExpandConstant('{app}\external.exe'), '-install', '', SW_SHOW,
ewWaitUntilTerminated, ResultCode) then
begin
{ handle success if necessary; ResultCode contains the exit code }
end
else begin
{ handle failure if necessary; ResultCode contains the error code }
bReboot := true;
end;
end;
function NeedRestart(): Boolean;
begin
Result := bReboot;
end;
К сожалению, это не работает, поскольку NeedRestart
вызывается раньше ssPostInstall
.
Есть ли другой способ инициировать перезагрузку?
Я не хочу устанавливать AlwaysRestart = yes
Я мог бы позволить всплывающему окну MsgBox
сообщить пользователю и сказать ему, что делать. Но было бы гораздо приятнее, если бы он мог обрабатываться в рамках установки автоматически.