応答が遅くなりましたが、答えを探している他の人のために作成したコード例です。
上記の[Setup]
セクションの上に、後で使用するためにAppNameという名前の定数を定義する必要があります。また、これを使用してSetup AppName変数を設定することもできます。
#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;
今、あなたは以下のように、BeforeInstallとAfterInstallパラメータを使用して[Run]
セクションでDisplayInstallProgressとUpdateInstallProgressプロシージャを呼び出すことができます。
[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反する:
常に内部で隠すコールを置きますCodeDlg.issに示すように、try..finally言語構造の一部になります。 Hideを呼び出さないと、ウィザードが進捗ページに永続的に表示されなくなります。
しかし、これを行わないと、[run]
セクションに項目間の進捗を実装する方法を理解できませんでした。
[Inno Setup:実行セクションでプログレスバーを操作する方法は?](http://stackoverflow.com/questions/34336466/inno-setup-how-to-manipulate-progress-bar-on-run) -section) –