Цитата: Как использовать два и более КОДОВ
  Бери здесь 
http://victor-dobrov.narod.ru/InnoSetupFAQ_ru-board.chm  
      Добавлено:  Кстати, нашел у себя в загашниках скрипт:  
 [Setup]  
 AppName=Drive Checked  
 AppVerName=Drive Checked  
 DefaultDirName={pf}\Drive Checked    
 [Languages]  
 Name: "ru"; MessagesFile: "compiler:Languages\Russian.isl"    
 [Messages]  
 ru.SelectDirBrowseLabel=Нажмите "Далее", чтобы продолжить. Для установки на другой диск, выберите из списка.    
 [_Code]  
 var  
 cbDrive: TComboBox;  
 DrvLetters: array of string;  
 FreeSpaceLabel: TLabel;    
 function GetDriveType(lpDisk: string): integer;  
 external 'GetDriveTypeA@kernel32.dll stdcall';    
 function GetLogicalDriveStrings(nLenDrives: LongInt; lpDrives: string): integer;  
 external 'GetLogicalDriveStringsA@kernel32.dll stdcall';    
 const  
 DRIVE_UNKNOWN=0;  
 DRIVE_NO_ROOT_DIR=1;  
 DRIVE_REMOVABLE=2;  
 DRIVE_FIXED=3;  
 DRIVE_REMOTE=4;  
 DRIVE_CDROM=5;  
 DRIVE_RAMDISK=6;    
 function DriveTypeString(dtype: integer): string;  
 begin  
 case dtype of  
 DRIVE_NO_ROOT_DIR: Result:='Неверный путь';  
 DRIVE_REMOVABLE: Result:='Съемный';  
 DRIVE_FIXED: Result:='';  
 DRIVE_REMOTE: Result:='Сетевой';  
 DRIVE_CDROM: Result:='CD-ROM';  
 DRIVE_RAMDISK: Result:='Ram диск';  
 else  
 Result:='Неизвестный';  
 end;  
 end;    
 procedure cbDriveOnClick(Sender: TObject);  
 begin  
 WizardForm.DirEdit.Text:=DrvLetters[cbDrive.ItemIndex]+'Program Files\Disk Checked';  
 end;    
 procedure FillCombo();  
 var  
 n: integer;  
 drivesletters: string; lenletters: integer;  
 drive: string;  
 disktype, posnull: integer;  
 sd: string;  
 begin  
 sd:=UpperCase(ExpandConstant('{sd}'));  
 drivesletters:=StringOfChar(' ', 64);  
 lenletters:=GetLogicalDriveStrings(63, drivesletters);  
 SetLength(drivesletters, lenletters);  
 drive:='';  
 n:=0;  
 while ((Length(drivesletters) > 0)) do  
 begin  
 posnull:=Pos(#0, drivesletters);  
 if posnull > 0 then  
 begin  
 drive:=UpperCase(Copy(drivesletters, 1, posnull-1));  
 disktype:=GetDriveType(drive);  
 if (not(disktype=DRIVE_REMOVABLE)) then  
 begin  
 cbDrive.Items.Add(drive+DriveTypeString(disktype))  
 SetArrayLength(DrvLetters, N+1);  
 DrvLetters[n]:=drive;  
 if (Copy(drive, 1, 2)=sd) then cbDrive.ItemIndex:=n;  
 n:=n+1;  
 end  
 drivesletters:=Copy(drivesletters, posnull+1, Length(drivesletters));  
 end  
 end;  
 cbDriveOnClick(cbDrive);  
 end;    
 procedure GetFreeSpaceCaption(Sender: TObject);  
 var  
 Path: string;  
 FreeMB, TotalMB: cardinal;  
 begin  
 Path:=ExtractFileDrive(WizardForm.DirEdit.Text);  
 GetSpaceOnDisk(Path, True, FreeMB, TotalMB);  
 if FreeMB > 1024 then  
 FreeSpaceLabel.Caption:='Свободно на диске:' + FloatToStr(round(FreeMB/1024*100)/100) + ' GB'  
 else  
 FreeSpaceLabel.Caption:='Свободно на диске:' + IntToStr(FreeMB) + ' MB'  
 end;    
 procedure InitializeWizard();  
 begin  
 cbDrive:=TComboBox.Create(WizardForm.SelectDirPage);  
 FreeSpaceLabel:=TLabel.Create(WizardForm);  
 with cbDrive do  
 begin  
 Parent:=WizardForm.DirEdit.Parent;  
 Left:=WizardForm.DirEdit.Left;  
 Top:=WizardForm.DirEdit.Top+WizardForm.DirEdit.Height*5;  
 Width:=WizardForm.DirEdit.Width+83;  
 Style:=csDropDownList;  
 end  
 with FreeSpaceLabel do  
 begin  
 Parent:=WizardForm.SelectDirPage;  
 Left:=ScaleX(0);  
 Top:=Scaley(167);  
 Width:=ScaleX(209);  
 Height:=ScaleY(13);  
 end;  
 WizardForm.DirBrowseButton.Visible:=true;  
 WizardForm.DirEdit.Enabled:=true;  
 WizardForm.DirEdit.OnChange:=@GetFreeSpaceCaption;  
 WizardForm.DirEdit.Text:=WizardForm.DirEdit.Text+#0;  
 FillCombo;  
 cbDrive.OnClick:=@cbDriveOnClick;  
 end;  
 Кажется, в загашник он был отправлен потому, что че-то там не работало. Хотя когда я скомпилил, вроде все пучком было. Короче, времени разбераться нет - я обещанные проги никак не могу закончить, так что если чего неправильного найдете здесь - пишите.