如何在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;

懒人版:

懒人版下载地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mad8834671

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值