Долгое время запуска установщика - добавить диалог перед wpWelcome? - PullRequest
1 голос
/ 11 декабря 2019

Мой установщик, созданный с помощью Inno Setup, имеет размер около 850 МБ, содержащий около 7000 файлов и 890 папок, до несжатого размера 1,98 ГБ.

При запуске процесса установки после появления Windows UAC Dialog установщик сидит с пустым значком на панели задач в течение приблиз. За 45 секунд до отображения Welcome Dialog .

Я предполагаю, что это происходит в процессе распаковки установщика? При запуске установщика с использованием только фиктивной записи файла Welcome Dialog отображается сразу.

В разделе [Files] я указываю только одну относительную папку:

Source: "{#Source}\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs

Сжатие в разделе [Setup] установлено на:

Compression=lzma
SolidCompression=yes

Есть ли диалог, который я могу показать в течение этого времени, который дает пользователю визуальную обратную связь о том, что что-то готовится?


Чтобы добавить к этому вопросу: Последняя запись в файле журнала перед 45-секундным зависанием:

Extracting temporary file: C:\Users\Markus\AppData\Local\Temp\is-CBETM.tmp\license.rtf

Я использую пользовательскую страницу лицензии, на которой я извлекаю файл и загружаю егокак RTFText:

procedure LicensePage_Create;
var
    LicenseFileName: string;
    LicenseFilePath: string;
    LicenseText: AnsiString;

begin
    LicensePage := CreateOutputMsgMemoPage(wpSelectDir, SetupMessage(msgWizardLicense), SetupMessage(msgLicenseLabel), SetupMessage(msgLicenseLabel3), '');
    LicensePage.RichEditViewer.Height := WizardForm.LicenseMemo.Height;
    LicenseFileName := 'license.rtf';
    ExtractTemporaryFile(LicenseFileName);
    LicenseFilePath := ExpandConstant('{tmp}\license.rtf');
    LoadStringFromFile(LicenseFilePath, LicenseText);
    LicensePage.RichEditViewer.RTFText := LicenseText;
    DeleteFile(LicenseFilePath);

    LicensePage.OnActivate := @LicensePageActivate;

    LicenseAcceptedRadio := CloneLicenseRadioButton(WizardForm.LicenseAcceptedRadio);
    LicenseNotAcceptedRadio := CloneLicenseRadioButton(WizardForm.LicenseNotAcceptedRadio);
    LicenseNotAcceptedRadio.Checked := True;

    LicensePageID := LicensePage.ID;
end;

1 Ответ

0 голосов
/ 12 декабря 2019

Если вы хотите использовать SolidCompression (действительно ли это того стоит?), Вы должны поместить все файлы, необходимые для запуска программы установки (например, файл "license") до больших файлов.

В противном случае установщик должен распаковать все большие файлы при запуске.

...