У Inno Setup есть параметр командной строки /LOG="filename"
. Могу ли я указать имя файла журнала из Inno Setup script, поэтому я могу включить его позже в свои отчеты об ошибках?
Как я могу зарегистрировать установки Inno Setup?
Ответ 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;