Как я могу войти в систему установки Inno Setup? - PullRequest
18 голосов
/ 25 февраля 2011

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

Ответы [ 2 ]

20 голосов
/ 25 февраля 2011

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

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; 
12 голосов
/ 29 января 2014

После комментария от 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; 
...