如何在InnoSetup中实现多个目录安装
在InnoSetup中 有时候总会遇到安装程序之后,还要安装文件到别的位置,就比如插件,但是一般的情况只需要简单在[FILES]段中写下对应的安装位置就行,但是如果遇到那个插件需要用户自己手动指定的情况如何实现呢?
下面是效果图。
上图的功能,需要用到InnoSetup中的代码自定义功能,代码如下
var
Label1: TLabel;
NewEdit1: TNewEdit;
NewButton1: TNewButton;
procedure ButtonOnClick(Sender: TObject); // 点击“浏览”按钮后的操作
var newDir: string;
begin
if BrowseForFolder('请选择要将插件安装到哪里!', newDir, false) then
NewEdit1.Text := newDir;
end;
procedure RedesignWizardForm;
begin
{ Label1 }
Label1 := TLabel.Create(WizardForm);
with Label1 do
begin
Name := 'Label1';
Parent := WizardForm.SelectDirPage;
AutoSize := False;
Caption := '插件将安装到以下目录:';
Transparent := False;
Left := ScaleX(0);
Top := ScaleY(155);
Width := ScaleX(327);
Height := ScaleY(20);
end;
with WizardForm.DiskSpaceLabel do
begin
Top := ScaleY(107);
end;
{ NewEdit1 }
NewEdit1 := TNewEdit.Create(WizardForm);
with NewEdit1 do
begin
Name := 'NewEdit1';
Parent := WizardForm.SelectDirPage;
Left := ScaleX(0);
Top := ScaleY(174);
Width := ScaleX(321);
Height := ScaleY(22);
Text:= ExpandConstant('{userappdata}\ABC'); // 默认副目录
end;
{ NewButton1 }
NewButton1 := TNewButton.Create(WizardForm);
with NewButton1 do
begin
Name := 'NewButton1';
Parent := WizardForm.SelectDirPage;
Left := ScaleX(336);
Top := ScaleY(174);
Width := ScaleX(81);
Height := ScaleY(24);
Caption := '浏览(S)...';
OnClick:= @ButtonOnClick;
end;
NewEdit1.TabOrder := 5;
NewButton1.TabOrder := 6;
end;
procedure InitializeWizard();
begin
RedesignWizardForm;
end;
function app2(Param: String): String; // 副目录
begin
Result := NewEdit1.Text;
end;
懒人版: