Поздний отклик, но вот какой-то пример кода, который я сделал для всех, кто ищет ответ.
В разделе [Setup]
вы должны указать константу с именем AppName для использования позже, вы также можете использовать ее для установки переменной App Appame.
#define AppName "Test Installer"
[Setup]
AppName={#AppName}
Теперь вниз в вашем [code]
разделе вам необходимо добавить следующее.
[Code]
var
InstallWithProgressPage : TOutputProgressWizardPage;
//Create custom progress bar for install progress
procedure InitializeWizard;
var
UpdatedPageString: AnsiString;
OriginalPageString: String;
begin
//The string msgWizardPreparing has the macro '[name]' inside that we have to replace.
OriginalPageString := SetupMessage(msgPreparingDesc);
StringChange(OriginalPageString, '[name]', '{#AppName}');
UpdatedPageString := OriginalPageString;
InstallWithProgressPage := CreateOutputProgressPage(SetupMessage(msgWizardPreparing), UpdatedPageString);
end;
//Enable or Disable the install progress page (also set initial progress/text)
procedure DisplayInstallProgress(showPage:Boolean; progressText:String);
begin
if(showPage = True) then
begin
InstallWithProgressPage.Show;
InstallWithProgressPage.SetText(progressText, '');
InstallWithProgressPage.SetProgress(0,100);
end
else
begin
InstallWithProgressPage.Hide;
end
end;
//Update the install progress page
procedure UpdateInstallProgress(progressText:String; progressPercent:Integer);
begin
InstallWithProgressPage.SetProgress(progressPercent,100);
InstallWithProgressPage.SetText(progressText, '');
end;
Теперь вы можете вызвать процедуры DisplayInstallProgress и UpdateInstallProgress в разделе [Run]
с использованием BeforeInstall и AfterInstall параметров, как показано ниже.
[Run]
FileName: "Powershell.exe"; Parameters: "-File {app}\Part1.ps1"; BeforeInstall: DisplayInstallProgress(True, 'Installing part 1.');
FileName: "Powershell.exe"; Parameters: "-File {app}\Part2.ps1"; BeforeInstall: UpdateInstallProgress('Installing part 2.', 30);
FileName: "Powershell.exe"; Parameters: "-File {app}\Part3.ps1"; BeforeInstall: UpdateInstallProgress('Installing part 3.', 60);
FileName: "Powershell.exe"; Parameters: "-File {app}\Part3.ps1"; BeforeInstall: UpdateInstallProgress('Installing part 4.',90); AfterInstall: DisplayInstallProgress(False, '');
Я использовал этот вопрос/ответ в качестве шаблона для создания страницы прогресса: How to show progress during “PrepareToInstall”?
Конечная нота, эта реализация идет против jrsoftware's advice:
надевайте Скрывать вызов внутри наконец, часть конструктора языка try..finally, как показано в CodeDlg.iss. Не вызывать «Скрыть» приведет к тому, что мастер постоянно застрял на странице прогресса.
Однако я не мог понять способ реализации прогресса по пунктам в разделе [run]
, не делая этого.
Возможный дубликат [Inno Setup: как управлять индикатором выполнения в разделе «Выполнить»?] (Http://stackoverflow.com/questions/34336466/inno-setup-how-to-manipulate-progress-bar-on-run -секция) –