相关疑难解决方法(0)

Inno Setup 运行部分的简单进度页面

我的安装程序非常简单,基本上是:

  1. 欢迎页面
  2. 进度页
  3. 最后一页

欢迎页面和最后页面是标准的(只需一个按钮)。在“进度”页面上,我正在静默安装一堆其他程序。

实际的脚本正在安装“[Run]”部分中的每个程序。
问题是进度条达到 100% 后就停留在那里。
我只能更改消息文本。

我想要实现的是使用 Pascal Script 来显示进度(因为它可以让我有更多的灵活性),例如:

procedure InitializeWizard;
begin
  ProgressPage.SetProgress(1, 100);
  exec(.......)
  ProgressPage.SetProgress(15, 100);
  exec(.......)
  ProgressPage.SetProgress(40, 100);
  ...
  ...
end;
Run Code Online (Sandbox Code Playgroud)

这样我就可以显示更准确的进度条。这就是我所拥有的(模拟安装。取自示例):

[Code]

var
  ProgressPage: TOutputProgressWizardPage;

procedure InitializeWizard;
begin
  ProgressPage := CreateOutputProgressPage('My App','');
end;

function NextButtonClick(CurPageID: Integer): Boolean;
var
  I: Integer;
begin
  if CurPageID = wpWelcome then begin
    ProgressPage.SetText('Starting installation...', '');
    ProgressPage.SetProgress(0, 0);
    ProgressPage.Show;
    try
      for I := 0 to 10 do begin
        ProgressPage.SetProgress(I, 10);
        Sleep(100);
      end;
    finally
      ProgressPage.Hide;
    end;
  end else
    Result …
Run Code Online (Sandbox Code Playgroud)

inno-setup pascalscript progress-bar

3
推荐指数
1
解决办法
9638
查看次数

Inno Setup从.NET Framework 4.5(或更高版本)安装程序获取进度以更新进度条位置

我目前正在安装.NET Framework 4.6.2作为PrepareToInstall事件功能的先决条件,以便我可以获取退出代码,设置NeedsReboot状态或在安装失败时中止.我的代码在下面,这一切都正常.

var
  PrepareToInstallLabel: TNewStaticText;
  PrepareToInstallProgressBar: TNewProgressBar;
  intDotNetResultCode: Integer;
  CancelWithoutPrompt, AbortInstall: Boolean;

function InitializeSetup(): Boolean;
begin
  Result := True;
  OverwriteDB := False;
  CancelWithoutPrompt := False;
  AbortInstall := False;
end;

function PrepareToInstall(var NeedsRestart: Boolean): String;
var
  intResultCode: Integer;
  strInstallType: String;
begin
  if not IsDotNet45Installed and IsWindows7Sp1OrAbove then
    begin
      HidePrepareToInstallGuiControls;
      PrepareToInstallLabel.Caption := 'Installing Microsoft .NET Framework 4.6.2...';
      ShowPrepareToInstallGuiControls;
      ExtractTemporaryFile('NDP462-KB3151800-x86-x64-AllOS-ENU.exe');
      if WizardSilent = True then
        begin
          strInstallType := '/q';
        end
      else
        begin
          strInstallType := '/passive';
        end;
      Exec(ExpandConstant('{tmp}\NDP462-KB3151800-x86-x64-AllOS-ENU.exe'), strInstallType …
Run Code Online (Sandbox Code Playgroud)

inno-setup pascalscript

2
推荐指数
1
解决办法
1324
查看次数

使 Inno Setup Installer 向主安装程序报告其安装进度状态

我目前有两个 Inno Setup 安装程序。我需要其中一个将其作为子安装程序的状态报告给另一个安装程序,即使它使用VERYSILENT命令运行。

我需要这个来根据子安装程序的安装进度在我的主安装程序中显示一个进度条,因为我不想要任何无限(字幕)进度条。

我还阅读了Delphi 中的 IPC 机制。如何将这种通信能力(如泵)添加到 Inno Setup 源代码中?有什么开始的提示吗?

提前致谢。

installation ipc inno-setup progress-bar

2
推荐指数
1
解决办法
1709
查看次数