title: Inno Setup with three destination folders
body: <p>I need to create a simple Inno Setup installer to copy three different sets of files to three user selectable folders for C: or D: etc,,.</p>
  
  <p>This is just files only no application.</p>
  
  <p>I did find one script "Prompt for an additional folder for data" but that only had one folder on the next page.</p>
  
  <p>Thanks.</p>
  
  <p>eg:</p>
  
  <p><a href="https://i.stack.imgur.com/AtjmX.jpg" rel="noreferrer"><img src="https://i.stack.imgur.com/AtjmX.jpg" alt="enter image description here"></a></p>
  
  <p><a href="http://badjohnny.com.au/temp/myinno.jpg" rel="noreferrer">http://badjohnny.com.au/temp/myinno.jpg</a></p>
  
  <p>Edit: This is the code I got:</p>
  
  <pre><code>[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></pre>
  
  <pre class="lang-pascal prettyprint-override"><code>[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;
  </code></pre>