Подтвердить что ты не робот

Как я могу зарегистрировать установки Inno Setup?

У Inno Setup есть параметр командной строки /LOG="filename". Могу ли я указать имя файла журнала из Inno Setup script, поэтому я могу включить его позже в свои отчеты об ошибках?

4b9b3361

Ответ 1

Вы можете установить опцию SetupLogging (SetupLogging=yes), а затем интегрировать следующий код в свой script, чтобы скопировать журнал где-нибудь.

procedure CurStepChanged(CurStep: TSetupStep);
var
  logfilepathname, logfilename, newfilepathname: string;
begin
  logfilepathname := ExpandConstant('{log}');
  logfilename := ExtractFileName(logfilepathname);
  newfilepathname := ExpandConstant('{app}\') + logfilename;

  if CurStep = ssDone then
  begin
    FileCopy(logfilepathname, newfilepathname, false);
  end;
end; 

Ответ 2

Следуя комментарию от Lars, я использовал процедуру DeinitializeSetup(), но я также изменил путь к новому файлу, чтобы использовать константу {src}, чтобы скопировать файл журнала в каталог, из которого выполняется программа установки, вместо {app} константа, которая может/не может быть создана, если пользователь отменяет установку:

// Called just before Setup terminates. Note that this function is called even if the user exits Setup before anything is installed.
procedure DeinitializeSetup();
var
  logfilepathname, logfilename, newfilepathname: string;
begin
  logfilepathname := ExpandConstant('{log}');
  logfilename := ExtractFileName(logfilepathname);
  // Set the new target path as the directory where the installer is being run from
  newfilepathname := ExpandConstant('{src}\') + logfilename;

  FileCopy(logfilepathname, newfilepathname, false);
end;