Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Решение проблемы с прогресс-баром в Inno Setup при загрузке файла

Delphi , Программа и Интерфейс , Инсталяция

Решение проблемы с прогресс-баром в Inno Setup при загрузке файла

При создании установщика с помощью Inno Setup иногда можно столкнуться с проблемой, когда прогресс-бар не обновляется во время загрузки файла. В этой статье мы рассмотрим решение этой проблемы, основанное на материале, предоставленном в контексте.

Описание проблемы

Разработчик создал скрипт Inno Setup для загрузки и запуска другого установщика, но столкнулся с проблемой, что прогресс-бар не обновляется во время загрузки файла. Все остальные функции работают нормально.

#define MyAppName "My Program Setup Downloader"
#define MySetupAppName "My Program Setup.exe"
#define MySetupUrlFolder "https://www.example.com/folder/"
#pragma include __INCLUDE__ + ";" + "c:\Program Files (x86)\Inno Download Plugin\"

[Setup]

AppName={#MyAppName}
AppVerName={#MyAppName}
DisableReadyPage=yes
DisableFinishedPage=yes
CreateAppDir=no
Uninstallable=no

#include <idp.iss>

[Code]

var FileName: string;

procedure InitializeWizard;
var DownloadUrl: String;
begin
  FileName := ExpandConstant('{tmp}\{#MySetupAppName}');
  DownloadUrl := '{#MySetupUrlFolder}{#MySetupAppName}';
  idpAddFile(DownloadUrl, FileName);
  idpDownloadAfter(wpSelectDir);
end;

function NextButtonClick(CurPageID: Integer) : boolean;
var ResultCode: Integer;
begin
  if CurPageID = IDPForm.Page.ID then
  begin
    Result := Exec(FileName, '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
    if not Result then MsgBox('Error Running Downloaded Setup File', mbError, MB_OK);
    Result := True;
  end
    else Result := True;
end;

Альтернативный ответ

Разработчик нашел workaround, который показывает детали загрузки, но все равно не понимает, почему не обновляется общий прогресс.

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = IDPForm.Page.ID then
  begin
    idpShowDetails(True);
    IDPForm.TotalProgressBar.Visible := false;
    IDPForm.TotalProgressLabel.Visible := false;
    IDPForm.TotalDownloaded.Visible := false;
    IDPForm.CurrentFileLabel.Caption := 'Downloading...';
    IDPForm.DetailsButton.Visible := False;
    WizardForm.NextButton.Visible := False;
    WizardForm.PageNameLabel.Caption := 'Downloading Setup File';
    WizardForm.PageDescriptionLabel.Caption := 'Please wait while the Setup file is being downloaded.';
  end;
end;

Подтвержденный ответ

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

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = IDPForm.Page.ID then
  begin
    IDPForm.TotalProgressBar.Visible := False;
    IDPForm.FileProgressBar.Top := IDPForm.TotalProgressBar.Top;
    IDPForm.FileProgressBar.Visible := True;
    IDPForm.DetailsButton.Visible := False;

    IDPForm.DetailsVisible := True;
  end;
end;

Спасибо за внимание!

Создано по материалам из источника по ссылке.

Контекст: Решение проблемы с прогресс-баром в Inno Setup при загрузке файла.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Инсталяция ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:10:04/0.0053019523620605/1