Inno Setup TOutputProgressWizardPage 的 SetProgress 不会立即更新栏

SetProgress of Inno Setup TOutputProgressWizardPage doesn't update the bar immediatelly

我正在使用 Inno Setup,我已经创建了一个进度页面,设置了进度条值并提取了文件:

ProgressPage := CreateOutputProgressPage('Preparing installations', '');
ProgressPage.SetProgress(50, 100);
ProgressPage.Show();
try
  ProgressPage.Msg1Label.Caption := 'preparation ....';
  ExtractTemporaryFile(C_Myfile);

  ProgressPage.SetProgress(100, 100);
finally
  ProgressPage.Hide();
end;

但是当我开始安装时,当文件开始提取时,栏是 0。应该如何将 bar 设置为 50?

自 Windows Vista 起,设置进度条位置会启动一个简短的动画,将进度条移动到所需位置。但由于应用程序(安装程序)在 ExtractTemporaryFile 期间冻结,所以动画不会发生。

有一个技巧可以避免动画。只需将位置设置得更高一点,然后将其移回。将位置移回没有动画。
参见 Disabling .NET progressbar animation when changing value?

并且只需要在TOutputProgressWizardPage.Show之后设置位置。

ProgressPage.Show();
ProgressPage.SetProgress(51, 100);
ProgressPage.SetProgress(50, 100);

相关问题: