Как я могу установить код выхода в Inno Setup? - PullRequest
7 голосов
/ 06 января 2010

Я хочу установить код выхода для моей установки, таким образом я буду знать, почему установка была прервана. Я использую Inno Setup.

Ответы [ 2 ]

12 голосов
/ 06 января 2010

Из документа справки Inno Setup ( из статьи «Коды выхода при установке» ):

Начиная с Inno Setup 3.0.3, программа установки может вернуть один из следующих кодов выхода:

0 Установка успешно завершена.

1 Не удалось инициализировать установку.

2 Пользователь нажал «Отмена» в мастере до начала фактической установки или выбрал «Нет» в открывшемся окне сообщения «Это будет установлено ...».

3 Произошла фатальная ошибка при подготовке к переходу к следующему этапу установки (например, от отображения страниц мастера предварительной установки до фактического процесса установки). Это никогда не должно происходить, за исключением самых необычных обстоятельств, таких как нехватка памяти или ресурсов Windows.

4 Во время самого процесса установки произошла фатальная ошибка.

Примечание. Ошибки, приводящие к отображению поля Abort-Retry-Ignore, не являются фатальными. Если пользователь выберет Прервать в таком окне сообщения, будет возвращен код выхода 5.

5 Пользователь нажал Отмена во время фактического процесса установки или выбрал Прервать в поле Abort-Retry-Ignore.

6 Процесс установки был принудительно прерван отладчиком (в IDE использовался Run | Terminate).

Вы можете легко проверить, успешно ли прошла установка, подтвердив, что код выхода равен 0. Кроме того: * * тысяче сорок-одна

Любой ненулевой код выхода указывает на то, что программа установки не была завершена.

Чтобы ответить на ваш вопрос более конкретно, вы можете определить, что установка была отменена, наблюдая код выхода 2 или 5.

Если вы хотите вернуть пользовательский код завершения, когда Inno в противном случае вернет 0, вы можете определить следующую функцию события:

function GetCustomSetupExitCode: Integer;

Из справочного документа ( из статьи «Написание сценариев Паскаля: функции события» ):

function GetCustomSetupExitCode: Integer;

Вернуть ненулевое число, чтобы дать команду программе установки вернуть код завершения. Эта функция вызывается только в том случае, если программа установки была успешно запущена до завершения и код выхода был бы 0.

7 голосов
/ 11 августа 2011

Использование:

[Code]
procedure ExitProcess(exitCode:integer);
  external 'ExitProcess@kernel32.dll stdcall';

procedure SomeEventHere();
begin
  if someerror then begin
    ExitProcess(9); //Your custom exit code
  end;
end;
...