加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

inno-setup – Inno Setup有三个目标文件夹

发布时间:2020-12-15 04:35:26 所属栏目:大数据 来源:网络整理
导读:我需要创建一个简单的Inno安装程序安装程序,将三组不同的文件复制到C:或D:等的三个用户可选文件夹中. 这只是文件,没有应用程序. 我找到了一个脚本“提示输入数据的附加文件夹”,但下一页只有一个文件夹. 谢谢. 例如: http://badjohnny.com.au/temp/myinno
我需要创建一个简单的Inno安装程序安装程序,将三组不同的文件复制到C:或D:等的三个用户可选文件夹中.

这只是文件,没有应用程序.

我找到了一个脚本“提示输入数据的附加文件夹”,但下一页只有一个文件夹.

谢谢.

例如:

http://badjohnny.com.au/temp/myinno.jpg

编辑:这是我得到的代码:

[Setup]
AppName=MyProg
AppVerName=MyProg
DefaultDirName={pf}MyProg
DisableProgramGroupPage=yes
UninstallDisplayIcon={app}MyProg.exe

[Files]
;Main program that will be installed in {app} folder
Source: MyProg.exe; DestDir: {app}

;Database file that will installed where user choosed
Source: DataBase.mdb; DestDir: {code:GetDataDir}
[Code]
var
  DataDirPage: TInputDirWizardPage;

procedure InitializeWizard;
begin
  { Create the page }

  DataDirPage := CreateInputDirPage(wpSelectDir,'Select Personal Data Directory','Where should personal data files be installed?','Select the folder in which Setup should install personal data files,' +
      'then click Next.',False,'');
  DataDirPage.Add('');

  DataDirPage.Values[0] := GetPreviousData('DataDir','');
end;

procedure RegisterPreviousData(PreviousDataKey: Integer);
begin
  { Store the selected folder for further reinstall/upgrade }
  SetPreviousData(PreviousDataKey,'DataDir',DataDirPage.Values[0]);
end;

function NextButtonClick(CurPageID: Integer): Boolean;
begin
  { Set default folder if empty }
  if DataDirPage.Values[0] = '' then 
     DataDirPage.Values[0] := ExpandConstant('{sd}DataDir');
  Result := True;
end;

function UpdateReadyMemo(Space,NewLine,MemoUserInfoInfo,MemoDirInfo,MemoTypeInfo,MemoComponentsInfo,MemoGroupInfo,MemoTasksInfo: String): String;
var
  S: String;
begin
  { Fill the 'Ready Memo' with the normal settings and the custom settings }
  S := '';

  S := S + MemoDirInfo + NewLine + NewLine;

  S := S + 'Database path' + NewLine;
  S := S + Space + DataDirPage.Values[0] + NewLine;

  Result := S;
end;

function GetDataDir(Param: String): String;
begin
  { Return the selected DataDir }
  Result := DataDirPage.Values[0];
end;

解决方法

你可以写这样的东西:
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}My Program

[Files]
; the parameter passed to the GetDir function here is the index of a directory
; input page item,so the following 3 files will be installed each into one of
; the directories specified in the input page items
Source: "File1.txt"; DestDir: "{code:GetDir|0}"
Source: "File2.txt"; DestDir: "{code:GetDir|1}"
Source: "File3.txt"; DestDir: "{code:GetDir|2}"
[Code]
var
  DirPage: TInputDirWizardPage;

function GetDir(Param: String): String;
begin
  Result := DirPage.Values[StrToInt(Param)];
end;

procedure InitializeWizard;
begin
  { create a directory input page }
  DirPage := CreateInputDirPage(
    wpSelectDir,'Caption','Description','SubCaption','');
  { add directory input page items }
  DirPage.Add('Prompt 1');
  DirPage.Add('Prompt 2');
  DirPage.Add('Prompt 3');
  { assign default directories for the items from the previously stored data; if }
  { there are no data stored from the previous installation,use default folders }
  { of your choice }
  DirPage.Values[0] := GetPreviousData('Directory1','C:HardcodedPath');
  DirPage.Values[1] := GetPreviousData('Directory2',ExpandConstant('{userdocs}'));
  DirPage.Values[2] := GetPreviousData('Directory3',ExpandConstant('{localappdata}'));
end;

procedure RegisterPreviousData(PreviousDataKey: Integer);
begin
  { store chosen directories for the next run of the setup }
  SetPreviousData(PreviousDataKey,'Directory1',DirPage.Values[0]);
  SetPreviousData(PreviousDataKey,'Directory2',DirPage.Values[1]);
  SetPreviousData(PreviousDataKey,'Directory3',DirPage.Values[2]);
end;

要处理标准的“安装目录”,请参阅:
Use two/multiple selected directories from custom page in Files section

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读