我需要创建一个简单的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