2014-09-04 49 views
6

我需要創建一個簡單的Inno安裝程序安裝程序,以將三組不同的文件複製到C:或D:等三個用戶可選文件夾。帶三個目標文件夾的Inno安裝程序

這只是文件只有沒有應用程序。

我確實找到了一個腳本「提示爲數據添加一個文件夾」,但在下一頁只有一個文件夾。

謝謝。

如:

enter image description here

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; 
+1

你發現的例子,你需要做什麼,但你需要創建三個控件並有三個功能來獲得路徑。 – Deanna 2014-09-04 08:20:40

+1

我發佈了我上面的代碼。謝謝 – LuaStart 2014-09-04 09:11:28

+1

我的答案仍然存在,您只需將添加到頁面的項目增加三倍,並且每次都提到。 – Deanna 2014-09-04 09:17:30

回答

9

你可以寫這樣的事情:

[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', False, ''); 
    { 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

相關問題