2015-10-26 2 views
1

Я использую Inno Setup в течение нескольких месяцев, но я изо всех сил пытаюсь найти, как обнаружить внутри самого установщика ошибку, которая заставит Inno Setup завершить ненулевой код выхода.Как вызвать exe при установке Inno Setup (в самом инсталляторе)?

Я думал об использовании CurStepChanged с шагом ssDone или даже DeinitializeSetup, но я не могу найти, как получить доступ к коду выхода мастера.

Я что-то пропустил? Должен быть способ сделать это ...

+0

Что бы вы сделали с кодом выхода? Я не задаю вопрос. –

+0

Я хотел бы знать, если что-то пошло не так, чтобы я мог начать процедуру отката на машине. Ваш предложенный ответ сделал трюк. –

ответ

1

Вы не можете узнать код выхода установщика из сценария Pascal.


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

var 
    Succeeded: Boolean; 

procedure DeinitializeSetup(); 
begin 
    if Succeeded then 
    begin 
    Log('Installation succeeded'); 
    end 
    else 
    begin 
    Log('Installation failed'); 
    end; 
end; 

procedure CurStepChanged(CurStep: TSetupStep); 
begin 
    if CurStep = ssDone then 
    begin 
    Succeeded := True; 
    end; 
end; 

Есть крайние случаи, когда ssDone используется даже, если программа установки не удается.

Например, когда это не удается, поскольку машина не была перезапущена, чтобы завершить предыдущую установку. В этом случае CurStepChanged не вызывается с ssPostInstall. Таким образом, вы можете проверить оба действия, если этот сценарий может произойти в вашем установщике.

+0

Спасибо за ответ. Я даю ему попробовать и вернусь, чтобы рассказать вам, как это произошло. –

+0

Хорошо, поэтому я взломал ваше решение, и теперь он работает по назначению. Большое спасибо. –

 Смежные вопросы

  • Нет связанных вопросов^_^