У 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;