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