Nye*_*uds 0 installer inno-setup pascalscript progress-bar
我正在为旧游戏(Command&Conquer 1,Win95版本)制作补丁,在某些情况下,执行补丁需要通过Pascal脚本编写的函数,这可能需要一段时间.
目前,我在页面更改为"安装"页面时执行此操作,因此,在用户选择所有选项并确认安装之后,在安装程序开始实际添加(和删除)文件之前.
procedure CurPageChanged(CurPageID: Integer);
begin
if (CurPageID = wpInstalling) then
begin
// Rename all saveg_hi.### files to savegame.###
renameSaveGames();
// clean up the ginormous files mess left behind if the game was installed from the 'First Decade' compilation pack
cleanupTFD();
end;
end;
Run Code Online (Sandbox Code Playgroud)
但由于该过程可能相当长,我宁愿以某种方式将其添加到实际的安装进度条.有没有办法实现这个目标?
您可以ProgressGauge
从安装页面控制WizardForm
.在下面的脚本中显示了如何从循环更新进度条(您只需用您的操作替换它).为了安全起见,进度条值如在执行自定义操作之前保存的最小值,最大值和位置,并在完成后恢复.
[Code]
procedure CurPageChanged(CurPageID: Integer);
var
I: Integer;
ProgressMin: Longint;
ProgressMax: Longint;
ProgressPos: Longint;
begin
if CurPageID = wpInstalling then
begin
// save the original "configuration" of the progress bar
ProgressMin := WizardForm.ProgressGauge.Min;
ProgressMax := WizardForm.ProgressGauge.Max;
ProgressPos := WizardForm.ProgressGauge.Position;
// output some status and setup the min and max progress values
WizardForm.StatusLabel.Caption := 'Doing my own pre-install...';
WizardForm.ProgressGauge.Min := 0;
WizardForm.ProgressGauge.Max := 100;
// here will be your time consuming actions with the progress update
for I := 0 to 100 do
begin
WizardForm.FilenameLabel.Caption := 'I''m on ' + IntToStr(I) + '%';
WizardForm.ProgressGauge.Position := I;
Sleep(50);
end;
// restore the original "configuration" of the progress bar
WizardForm.ProgressGauge.Min := ProgressMin;
WizardForm.ProgressGauge.Max := ProgressMax;
WizardForm.ProgressGauge.Position := ProgressPos;
end;
end;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3402 次 |
最近记录: |