正式会员享受无限制浏览网站功能和高速网盘下载,赶快加入本站吧!
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- [Files]
- Source: is7z.dll; DestDir: {tmp}; Flags: dontcopy
- [Code]
- var
- ProgressBar : TNewProgressBar;
- ExtractFile:TNewStaticText;
- Button1:TButton;
- procedure Extract7z (hWnd, hpb, hst: THandle; fpath, extractPath, pass:PAnsiChar); external 'Extract7z@files:is7z.dll stdcall';
- procedure CancelExtract; external 'CancelExtract@files:is7z.dll stdcall';
- procedure InitializeWizard();
- begin
- ProgressBar := TNewProgressBar.Create(WizardForm);
- ExtractFile:=TNewStaticText.Create(WizardForm);
- with WizardForm.ProgressGauge do
- begin
- ProgressBar.Left := Left;
- ProgressBar.Top := Top + ScaleX(55);
- ProgressBar.Width := Width;
- ProgressBar.Height := Height;
- ProgressBar.Parent := WizardForm.InstallingPage;
- ProgressBar.max := 100;
- ProgressBar.Position := 0;
- ExtractFile.parent:= WizardForm.InstallingPage;
- ExtractFile.autosize:= false;
- ExtractFile.Width := Width;
- ExtractFile.top:=Top + ScaleX(35);
- ExtractFile.caption:='解压 7zip';
- end;
- end;
- procedure Button1OnClick(Sender: TObject);
- begin
- CancelExtract;
- end;
- procedure CurStepChanged(CurStep: TSetupStep);
- begin
- If CurStep=ssPostInstall then
- begin
- Button1:=TButton.create(WizardForm);
- Button1.parent:=WizardForm;
- Button1.width:=135;
- Button1.caption:='取消解压';
- Button1.left:=260;
- Button1.top:=WizardForm.cancelbutton.top;
- Button1.OnClick:=@Button1OnClick;
- try
- Extract7z (wizardform.handle, progressbar.handle, ExtractFile.handle, ExpandConstant('{src}') + '\1.7z', ExpandConstant('{app}'), 'mypass'); // 外部文件 1.7z,最后这个参数是它的解压密码
- Button1.visible:=false;
- except
- MsgBox('密码错误!', mbInformation, MB_OK);
- Button1.visible:=false;
- end;
- end;
- end;
复制代码 上面的例子中,外部文件为 1.7z,它位于安装程序 setup.exe 所在的文件夹。1.7z 文件的解压密码是 mypass
不添加第二个进度条,而是直接在原来第一个进度条中显示解压外部文件进度的代码:
- [Setup]
- AppName=My Program
- AppVerName=My Program version 1.5
- DefaultDirName={pf}\My Program
- DefaultGroupName=My Program
- [Files]
- Source: is7z.dll; DestDir: {tmp}; Flags: dontcopy
- [Code]
- var
- Button1:TButton;
- procedure Extract7z (hWnd, hpb, hst: THandle; fpath, extractPath, pass:PAnsiChar); external 'Extract7z@files:is7z.dll stdcall';
- procedure CancelExtract; external 'CancelExtract@files:is7z.dll stdcall';
- procedure Button1OnClick(Sender: TObject);
- begin
- CancelExtract;
- end;
- procedure CurStepChanged(CurStep: TSetupStep);
- begin
- If CurStep=ssPostInstall then
- begin
- Button1:=TButton.create(WizardForm);
- Button1.parent:=WizardForm;
- Button1.width:= WizardForm.cancelbutton.width;
- Button1.Height:= WizardForm.cancelbutton.Height;
- Button1.caption:='取消解压';
- Button1.left:= 290;
- Button1.top:=WizardForm.cancelbutton.top;
- Button1.OnClick:=@Button1OnClick;
- WizardForm.StatusLabel.Caption:= '正在解压外部 7zip 文件,请稍候...';
- try
- Extract7z (wizardform.handle, WizardForm.ProgressGauge.handle, WizardForm.FileNameLabel.handle, ExpandConstant('{src}') + '\1.7z', ExpandConstant('{app}'), 'mypass'); // 外部文件 1.7z,最后这个参数是它的解压密码
- Button1.visible:=false;
- except
- MsgBox('密码错误!', mbInformation, MB_OK);
- Button1.visible:=false;
- end;
- end;
- end;
复制代码
|