Проблема в том, что [Run]
возникает после успешного завершения процесса установки.
Таким образом, вы не можете отменить на этом этапе, вы можете только удалить.
Также [Run]
не позволяет получить код выхода.
Итак, у вас есть несколько вариантов.
Событие использования: procedure CurStepChanged(CurStep: TSetupStep);
И вызов {tmp}\test.bat
с использованием Exec
или ExecAsOriginalUser
, оба возвращают ResultCode. Затем вы можете предложить пользователю удалить.
Однако я думаю, что отмена будет проще.
Для этого создайте AfterInstall
Событие в последнем файле вашего проекта.
И запустите программу из этого события, так как вы можете отменить это событие.
Вот пример кода, который показывает, как это можно сделать.
[Files]
Source: "MYPROG.EXE"; DestDir: "{app}"; AfterInstall: MyAfterInstall
[Code]
procedure MyAfterInstall();
var
ResCode : Integer;
begin
if Exec(ExpandConstant('{tmp}') + '\test.bat',
'', SW_HIDE, ewWaitUntilTerminated, ResCode) then
begin
{ Program Ran successfully ResCode now contains exit code results }
{ if Exit was 10 then Cancel Installation. }
if ResCode = 10 then
begin
WizardForm.Close;
end;
end
else
begin
{ Problem running Program }
MsgBox('Error', SysErrorMessage(ResCode), mbError, MB_OK);
end;
end;