0
点赞
收藏
分享

微信扫一扫

如何在InnoSetup中实现多个目录安装

书坊尚 2022-03-14 阅读 140
其他scala

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

懒人版:

举报

相关推荐

0 条评论