Автор: Hell_Dog2011
Дата сообщения: 06.06.2012 15:36
		помогите плиз по моему вопросу очень надо. 
  
 Добавлено: 
 при установки как доходит до распаковки srep  выдаёт ошибку невозможно записать данные на диск возможно на нём закончилось свободное место.[more][Code] 
 const 
   PCFonFLY=true; 
   notPCFonFLY=false; 
  
 var 
   LabelPct, LabelCurrFileName, LabelStatusRollback, LabelStatus, LabelTime3: TLabel; 
   OveralPct, n, Cancel: integer; 
   CancelUnpackingBtn: HWND; 
   Comps1,Comps2,Comps3, TmpValue: longword; 
   MyError: boolean; 
   msgError: string; 
   PCFVer: double; 
  
 type 
   TCallback = function (OveralPct,CurrentPct: integer;CurrentFile,TimeStr1,TimeStr2,TimeStr3:PAnsiChar): longword; 
  
   TMessage = record hWnd: HWND; msg, wParam: Word; lParam: LongWord; Time: TFileTime; pt: TPoint; end; 
    
 function PeekMessage(var lpMsg: TMessage; hWnd: HWND; wMsgFilterMin, wMsgFilterMax, wRemoveMsg: UINT): BOOL; external 'PeekMessageA@user32.dll stdcall'; 
 function TranslateMessage(const lpMsg: TMessage): BOOL; external 'TranslateMessage@user32.dll stdcall'; 
 function DispatchMessage(const lpMsg: TMessage): Longint; external 'DispatchMessageA@user32.dll stdcall'; 
 function WrapMyCallback(callback:TCallback; paramcount:integer):longword;external 'wrapcallback@files:innocallback.dll stdcall'; 
 function ISArcExtract(CurComponent:longword; PctOfTotal:double; InName, OutPath: AnsiString; DeleteInFile:boolean; Password, CfgFile, WorkPath: AnsiString; ExtractPCF: BOOL ):BOOL; external 'ISArcExtract@files:ISDone.dll stdcall'; 
 function IS7ZipExtract(CurComponent:longword; PctOfTotal:double; InName, OutPath: AnsiString; DeleteInFile:boolean; Password: AnsiString):BOOL; external 'IS7zipExtract@files:ISDone.dll stdcall'; 
 function ISRarExtract(CurComponent:longword; PctOfTotal:double; InName, OutPath: AnsiString; DeleteInFile:boolean; Password: AnsiString):BOOL; external 'ISRarExtract@files:ISDone.dll stdcall'; 
 function ISPrecompExtract(CurComponent:longword; PctOfTotal:double; InName, OutFile: AnsiString; DeleteInFile:boolean):BOOL; external 'ISPrecompExtract@files:ISDone.dll stdcall'; 
 function ISSRepExtract(CurComponent:longword; PctOfTotal:double; InName, OutFile: AnsiString; DeleteInFile:boolean):BOOL; external 'ISSrepExtract@files:ISDone.dll stdcall'; 
 function ShowChangeDiskWindow(Text, DefaultPath, SearchFile:AnsiString):BOOL; external 'ShowChangeDiskWindow@files:ISDone.dll stdcall'; 
 function ISDoneInitialize(RecordFileName:AnsiString; TimeType,Comp1,Comp2,Comp3:longword; PrecompVers: double; RecursiveSubDir:boolean; WinHandle, NeededMem:longint; callback:TCallback):BOOL; external 'ISDoneInitialize@files:ISDone.dll stdcall'; 
 function ISDoneStop:BOOL; external 'ISDoneStop@files:ISDone.dll stdcall'; 
 function GetWindowLong(hWnd, nIndex: Integer): Longint; external 'GetWindowLongA@user32 stdcall delayload'; 
 function SetWindowText(hWnd: Longint; lpString: AnsiString): Longint; external 'SetWindowTextA@user32 stdcall delayload'; 
 function cm(Message: String): String; Begin Result:= ExpandConstant('{cm:'+ Message +'}') End; 
  
 Procedure SetTaskBarTitle(Title: AnsiString); var h: Integer; 
 begin 
   h:= GetWindowLong(MainForm.Handle, -8); if h <> 0 then SetWindowText(h, Title); 
 end; 
  
 procedure AppProcessMessage; 
 var 
     Msg: TMessage; 
 begin 
     while PeekMessage(Msg, 0, 0, 0, 1) do begin 
         TranslateMessage(Msg); 
         DispatchMessage(Msg); 
     end; 
 end; 
  
 function ProgressCallback(OveralPct,CurrentPct: integer;CurrentFile,TimeStr1,TimeStr2,TimeStr3:PAnsiChar): longword; 
 var 
    pr: Extended; 
    w, w1: integer; 
    p: string; 
 begin 
    w:=Round(458*OveralPct/1000); 
    ImgSetPosition(PB3Img,120,302,w,21); 
    LabelCurrFileName.Caption :=ExpandConstant('{app}\')+CurrentFile; 
    if LabelCurrFileName.Caption<>WizardForm.FilenameLabel.Caption then 
    LabelCurrFileName.Caption:=MinimizePathName(LabelCurrFileName.Caption, LabelCurrFileName.Font, 560); 
    p :=IntToStr(OveralPct div 10)+' %.'; 
    LabelPct.Caption :=ExpandConstant('{cm:AllProgress} ')+p+ExpandConstant(' {cm:Remains} ')+TimeStr1; 
    LabelTime3.Caption:=ExpandConstant('{cm:AllElapsedTime} ')+TimeStr3; 
    if GetTickCount-LastTimerEvent>5000{5 секунд} then begin 
       LastTimerEvent:= GetTickCount; 
       ImgSetVisibility(AImg[CurrentImage],False); 
       CurrentImage:=CurrentImage+1; 
       if CurrentImage=GetArrayLength(AImg) then CurrentImage:=0; 
       ImgSetVisibility(AImg[CurrentImage],True); 
    end; 
    ImgApplyChanges(WizardForm.Handle); 
    AppProcessMessage; 
    Result := Cancel; 
 end; 
  
 procedure CancelUnpackingOnEnter(hBtn:HWND); 
 begin 
   sndPlaySound(ExpandConstant('{tmp}\WFEnter.wav'),$0001); 
 end; 
  
 procedure CancelUnpackingOnClick(hBtn:HWND); 
 begin 
   if MsgBox( SetupMessage( msgExitSetupMessage ), mbConfirmation, MB_YESNO ) = IDYES then Cancel:= -1; 
 end; 
  
 procedure HideComponent; 
 begin 
   LabelStatusRollback.Show; 
   LabelPct.Hide; 
   LabelCurrFileName.Hide; 
   LabelStatus.Hide; 
   PageNameLabel.Hide; 
   PageDescriptionLabel.Hide; 
   ProgressInfoLabel.Hide; 
   StatusLabel.Hide; 
   ProgressInfoLabel.Hide; 
   FilenameLabel.Hide; 
   ImgSetVisibility(PBBkg1Img,False); 
   ImgSetVisibility(PBBkg2Img,False); 
   ImgSetVisibility(PB1Img,False); 
   ImgSetVisibility(PB2Img,False); 
   ImgSetVisibility(PB3Img,False); 
   BtnSetVisibility(CancelUnpackingBtn, False); 
   BtnSetVisibility(hCancelBtn, True); 
   ImgApplyChanges(WizardForm.Handle); 
 end; 
  
 procedure Error; 
 var    n:integer; 
 begin 
   Exec(ExpandConstant('{uninstallexe}'), '/SILENT','', sw_Hide, ewWaitUntilTerminated, n); 
 end; 
  
 procedure CreateISDoneComponents; 
 begin 
     CancelUnpackingBtn:=BtnCreate(WizardForm.Handle,ScaleX(652),ScaleY(487),ScaleX(111),ScaleY(39),ExpandConstant('{tmp}\button.png'),18,False); 
     BtnSetEvent(CancelUnpackingBtn,BtnMouseEnterEventID,WrapBtnCallback(@CancelUnpackingOnEnter,1)); 
     BtnSetEvent(CancelUnpackingBtn,BtnClickEventID,WrapBtnCallback(@CancelUnpackingOnClick,1)); 
     BtnSetFont(CancelUnpackingBtn,WFButtonFont.Handle); 
     BtnSetFontColor(CancelUnpackingBtn,$DAE369,$DAE369,$DAE369,$B6B6B6); 
     BtnSetCursor(CancelUnpackingBtn,GetSysCursorHandle(32649)); 
     BtnSetVisibility(CancelUnpackingBtn, False); 
    
     LabelPct := TLabel.Create(WizardForm); 
   with LabelPct do begin 
     AutoSize:=False; 
     SetBounds(ScaleX(80), ScaleY(355), ScaleX(638), ScaleY(19)); 
     Alignment := taCenter; 
     Transparent:=True; 
     Font.Name:= 'Georgia' 
     Font.Size:= 10; 
     Font.Color:=$FFFFFF; 
     Font.Style:=[fsBold,fsItalic]; 
     Parent := WizardForm; 
   end; 
  
     LabelCurrFileName := TLabel.Create(WizardForm); 
   with LabelCurrFileName do begin 
     AutoSize:=False; 
     SetBounds(ScaleX(119), ScaleY(270), ScaleX(560), ScaleY(17)); 
     Transparent:=True; 
     Font.Name:= 'Georgia' 
     Font.Size:= 10; 
     Font.Color:=$FFFFFF; 
     Font.Style:=[fsBold,fsItalic]; 
     Caption:= ''; 
     Parent := WizardForm; 
     Hide; 
   end; 
  
     LabelStatusRollback := TLabel.Create(WizardForm); 
   with LabelStatusRollback do begin 
     Parent    := WizardForm; 
     AutoSize  := False; 
     SetBounds(ScaleX(120), ScaleY(245), ScaleX(400), ScaleY(17)); 
     Transparent:=True; 
     Font.Name:= 'Georgia'; 
     Font.Size:= 11; 
     Font.Color:=$FFFFFF; 
     Font.Style:=[fsBold,fsItalic]; 
     Caption   := cm('TitleBack'); 
   end; 
  
     LabelStatus := TLabel.Create(WizardForm); 
   with LabelStatus do begin 
     Parent    := WizardForm; 
     AutoSize  := False; 
     SetBounds(ScaleX(120), ScaleY(245), ScaleX(400), ScaleY(17)); 
     Transparent:=True; 
     Font.Name:= 'Georgia'; 
     Font.Size:= 10; 
     Font.Color:=$FFFFFF; 
     Font.Style:=[fsBold,fsItalic]; 
     Caption   := cm('ArcTitle'); 
   end; 
  
     LabelTime3 := TLabel.Create(WizardForm); 
   with LabelTime3 do begin 
     AutoSize:=False; 
     SetBounds(ScaleX(80), ScaleY(405), ScaleX(638), ScaleY(19)); 
     Alignment := taCenter; 
     Transparent:=True; 
     Font.Name:= 'Georgia' 
     Font.Size:= 10; 
     Font.Color:=$FFFFFF; 
     Font.Style:=[fsBold,fsItalic]; 
     Parent := WizardForm; 
   end; 
 end; 
  
 Procedure UnpackingISDoneFinished(CurPageID: Integer); 
 begin 
   if (CurPageID = wpFinished) and MyError then 
   begin 
       LabelTime3.Hide; 
       WizardForm.Caption:= ExpandConstant('{cm:ISDoneError}'); 
       SetTaskBarTitle(SetupMessage(msgErrorTitle)); 
       FinishedHeadingLabel.Caption:=cm('FinishedHeading1'); 
       FinishedLabel.Caption:= msgError + ExpandConstant(' {cm:Trouble}') + #10#13#10#13+ExpandConstant('{cm:FinishedLabel2}'); 
       SetTimer(WizardForm.Handle,WFDiskTimerID,1000,WrapTimerProc(@FinishFlashing,4)); 
     end; 
   if (CurPageID = wpFinished) and (Cancel <> 0) then 
   begin 
       LabelTime3.Hide; 
       WizardForm.Caption:= ExpandConstant('{cm:ISDoneError1}'); 
       SetTaskBarTitle(SetupMessage(msgErrorTitle)); 
       FinishedHeadingLabel.Caption:=cm('FinishedHeading1'); 
       FinishedLabel.Caption:= msgError + ExpandConstant(' {cm:Trouble}') + #10#13#10#13+ExpandConstant('{cm:FinishedLabel2}'); 
       SetTimer(WizardForm.Handle,WFDiskTimerID,1000,WrapTimerProc(@FinishFlashing,4)); 
     end; 
 end; 
  
 procedure UnpackingISDone(CurStep: TSetupStep); 
 begin 
   if CurStep = ssPostInstall then 
     if MyError then Error; 
   if CurStep = ssInstall then begin 
     PBBkg1Img:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\ProgressBackground.png'),119,300,460,25,True,True); 
     PBBkg2Img:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\ProgressBackground2.png'),581,300,98,25,True,True); 
     ImgApplyChanges(WizardForm.Handle); 
     PB3Img:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\ProgressImg.png'),120,302,458,21,True,True); 
     PB2Img:=ImgLoad(WizardForm.Handle,ExpandConstant('{tmp}\ProgressImg.png'),582,302,96,21,True,True); 
     PBOldProc:=SetWindowLong(WizardForm.ProgressGauge.Handle,-4,CallBackProc(@PBProc,4)); 
     ImgSetVisibility(PB2Img,False); 
     LabelStatus.Show; 
     BtnSetText(CancelUnpackingBtn,WizardForm.CancelButton.Caption); 
     BtnSetVisibility(CancelUnpackingBtn, True); 
     BtnSetVisibility(hCancelBtn, False); 
     LabelPct.Show; 
     LabelCurrFileName.Show; 
     ProgressInfoLabel.Hide; 
     Cancel:=0; 
      
     // Распаковка всех необходимых файлов в папку {tmp}. 
  
     ExtractTemporaryFile('facompress.dll'); //ускоряет распаковку .arc архивов. 
 //    ExtractTemporaryFile('arc.ini'); 
 //    ExtractTemporaryFile('srep.exe'); 
  
 #ifdef records 
     ExtractTemporaryFile('records.inf'); 
 #endif 
 #ifdef precomp04 
     ExtractTemporaryFile('packjpg_dll.dll'); 
     ExtractTemporaryFile('RTconsole.exe'); 
     ExtractTemporaryFile('precomp04.exe'); 
 #endif 
 #ifdef precomp038 
     ExtractTemporaryFile('packjpg_dll.dll'); 
     ExtractTemporaryFile('RTconsole.exe'); 
     ExtractTemporaryFile('precomp038.exe'); 
     ExtractTemporaryFile('zlib1.dll'); 
 #endif 
 #ifdef unrar 
     ExtractTemporaryFile('Unrar.dll'); 
 #endif 
  
 // Подготавливаем переменную, содержащую всю информацию о выделенных компонентах для ISDone.dll 
 // максимум 96 компонентов. 
     Comps1:=0; Comps2:=0; Comps3:=0; 
 #ifdef Components 
     TmpValue:=1; 
     //if IsComponentSelected('text\rus') then Comps1:=Comps1+TmpValue;     //компонент 1 
     //if Comp1 then Comps1:=Comps1+TmpValue;     //компонент 1 
     TmpValue:=TmpValue*2; 
     //if IsComponentSelected('text\rus') then Comps1:=Comps1+TmpValue;     //компонент 2 
     if Comp2 then Comps1:=Comps1+TmpValue;     //компонент 2 
     TmpValue:=TmpValue*2; 
     //if IsComponentSelected('text\eng') then Comps1:=Comps1+TmpValue;     //компонент 3 
     if Comp3 then Comps1:=Comps1+TmpValue;     //компонент 3 
     TmpValue:=TmpValue*2; 
     //if IsComponentSelected('voice\rus') then Comps1:=Comps1+TmpValue;    //компонент 4 
     //if Comp4 then Comps1:=Comps1+TmpValue;     //компонент 4 
     TmpValue:=TmpValue*2; 
     //if IsComponentSelected('voice\eng') then Comps1:=Comps1+TmpValue;    //компонент 5 
     if Comp5 then Comps1:=Comps1+TmpValue;     //компонент 5 
     TmpValue:=TmpValue*2; 
     //if IsComponentSelected('voice\eng') then Comps1:=Comps1+TmpValue;    //компонент 5 
     if Comp6 then Comps1:=Comps1+TmpValue;     //компонент 6 
 //    ..... 
 #endif 
  
 #ifdef precomp04 
     PCFVer:=0.4; 
 #else 
 #ifdef precomp038 
     PCFVer:=0.38; 
 #else 
     PCFVer:=0; 
 #endif 
 #endif 
     repeat 
       MyError:=true; 
       if not ISDoneInitialize(ExpandConstant('{src}\records.inf'), $F777, Comps1,Comps2,Comps3, 0, false, MainForm.Handle, {#NeedMem}, @ProgressCallback) then break; 
       repeat 
  
         //if not ISArcExtract ( 0, 0, ExpandConstant('{src}\*.bin'), ExpandConstant('{app}'),  false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break; 
  
 //     далее находятся закомментированые примеры различных комбинаций параметров и функций распаковки 
                                                                //********bin*pc\audio\Sfx*********// 
         if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data\Data.bin'), ExpandConstant('{app}\pc\audio\Sfx\'),  false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break; 
         if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data\Data1.bin'), ExpandConstant('{app}\pc\audio\Sfx\'),  false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break; 
         if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data\Data2.bin'), ExpandConstant('{app}\pc\audio\Sfx\'),  false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break; 
         if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data\Data3.bin'), ExpandConstant('{app}\pc\audio\Sfx\'),  false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break; 
         if not ISSRepExtract( 0, 0, ExpandConstant('{app}\pc\audio\Sfx\*.srep'),ExpandConstant('{app}\pc\audio\Sfx\.rcf'), true                         ) then break; 
                                                              //************data4pc_anim**************\\ 
         if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data\Data4.bin'), ExpandConstant('{app}\pc\anim'),  false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break; 
         if not ISSRepExtract( 0, 0, ExpandConstant('{app}\pc\anim\*.srep'),ExpandConstant('{app}\pc\anim\*.img'), true                         ) then break; 
                                                           
                                                         //************data5pc_models_cdimages**************\\ 
         if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data\Data5.bin'), ExpandConstant('{app}\pc\models\cdimages\'),  false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break; 
         if not ISSRepExtract( 0, 0, ExpandConstant('{app}\pc\models\cdimages\*.srep'),ExpandConstant('{app}\pc\models\cdimages\*.img'), true                         ) then break; 
          
                                                      //************data6pc_data_maps_east**************\\ 
         if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data\Data6.bin'), ExpandConstant('{app}\pc\data\maps\east\'),  false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break; 
         if not ISSRepExtract( 0, 0, ExpandConstant('{app}\pc\data\maps\east\*.srep'),ExpandConstant('{app}\pc\data\maps\east\*.img'), true                         ) then break; 
          
                                                      //************data7pc_data_cdimages**************\\ 
         if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data\Data7.bin'), ExpandConstant('{app}\pc\data\cdimages\'),  false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break; 
         if not ISSRepExtract( 0, 0, ExpandConstant('{app}\pc\data\cdimages\*.srep'),ExpandConstant('{app}\pc\data\cdimages\*.img'), true                         ) then break; 
           
                                                      //************data8pc\data_maps_jersey**************\\ 
         if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data\Data8.bin'), ExpandConstant('{app}\pc\data\maps\jersey\'),  false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break; 
         if not ISSRepExtract( 0, 0, ExpandConstant('{app}\pc\data\maps\jersey\*.srep'),ExpandConstant('{app}\pc\data\maps\jersey\*.img'), true                         ) then break; 
                                                        
                                                      //************data9pc_data_maps_manhat**************\\ 
          if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data\Data9.bin'), ExpandConstant('{app}\pc\data\maps\manhat\'),  false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break; 
           if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data\Data0.bin'), ExpandConstant('{app}\'),  false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break; 
          if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data\Data01.bin'), ExpandConstant('{app}\'),  false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break; 
          if not ISSRepExtract( 0, 0, ExpandConstant('{app}\pc\data\maps\manhat\*.srep'),ExpandConstant('{app}\pc\data\maps\manhat\*.img'), true                         ) then break; 
          
          
         (*//if not ISSRepExtract( 0, 0, ExpandConstant('{app}\models\cutscene.srep'),ExpandConstant('{app}\models\cutscene.img'), true                         ) then break; 
         if not ISSRepExtract( 0, 0, ExpandConstant('{app}\models\gta_int.srep'),ExpandConstant('{app}\models\gta_int.img'), true                         ) then break; 
          if not ISSRepExtract( 0, 0, ExpandConstant('{app}\models\gta3.srep'),ExpandConstant('{app}\models\gta3.img'), true                         ) then break; 
          if not ISSRepExtract( 0, 0, ExpandConstant('{app}\models\player.srep'),ExpandConstant('{app}\models\player.img'), true                         ) then break; 
                                                            
                                                          //************good**************\\ 
          (*//if not ISArcExtract ( 0, 0, ExpandConstant('{src}\Data1.bin'), ExpandConstant('{app}\audio\SFX'),  false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break; 
         if not ISSRepExtract( 0, 0, ExpandConstant('{app}\audio\SFX\*.srep'),ExpandConstant('{app}\audio\SFX'), true                         ) then break; 
         if not ISArcExtract ( 0, 0, ExpandConstant('{src}\Data2.bin'), ExpandConstant('{app}\audio\SFX'),  false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break; 
         if not ISSRepExtract( 0, 0, ExpandConstant('{app}\audio\SFX\*.srep'),ExpandConstant('{app}\audio\SFX'), true                         ) then break; 
         if not ISArcExtract ( 0, 0, ExpandConstant('{src}\Data3.bin'), ExpandConstant('{app}\audio\streams'),  false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break; 
         if not ISSRepExtract( 0, 0, ExpandConstant('{app}\audio\streams\*.srep'),ExpandConstant('{app}\audio\streams'), true                         ) then break;)/// 
          
         //if not ISSRepExtract( 0, 0, ExpandConstant('{app}\data.srp'),ExpandConstant('{app}\data.pcf'), true                         ) then break; 
         //if not ISPrecompExtract( 0, 0, ExpandConstant('{app}\data.pcf'),    ExpandConstant('{app}\'),    true                         ) then break; 
         //if not ISArcExtract ( 0, 0, ExpandConstant('{src}\bin\data1.bin'), ExpandConstant('{app}'),  false, '', '', ExpandConstant('{app}'), notPCFonFLY) then break; 
  
         //if not IS7ZipExtract   ( 0, 0, ExpandConstant('{src}\data64.7z'),   ExpandConstant('{app}'),           false, ''                     ) then break; 
         //if not ISSRepExtract   ( 0, 0, ExpandConstant('{app}\data1.srp'), ExpandConstant('{app}\data1.pcf'), true                         ) then break; 
         //if not ISArcExtract    ( 0, 0, ExpandConstant('{app}\data64.arc'),  ExpandConstant('{app}\'),           true, '', '', '',notPCFonFLY ) then break; 
         //if not ISPrecompExtract( 0, 0, ExpandConstant('{app}\data1.pcf'),    ExpandConstant('{app}'),    true                         ) then break; 
         //if not IS7ZipExtract   ( 0, 0, ExpandConstant('{app}\data.7z'),     ExpandConstant('{app}'),           true, ''                     ) then break; 
  
         //if not ISArcExtract    ( 0, 0, ExpandConstant('{src}\bin\data2.bin'),       ExpandConstant('{app}'),            false, '', '', '', notPCFonFLY ) then break; 
         //if not ISSRepExtract   ( 0, 0, ExpandConstant('{app}\data2.srp'), ExpandConstant('{app}\data2.pcf'), true                          ) then break; 
         //if not ISPrecompExtract( 0, 0, ExpandConstant('{app}\data2.pcf'),  ExpandConstant('{app}'),  true                           ) then break; 
         //if not IS7ZipExtract   ( 0, 0, ExpandConstant('{app}\data1\CODMW2.7z'),   ExpandConstant('{app}\data1'),            true,  ''                      ) then break; 
         //if not ISArcExtract    ( 0, 0, ExpandConstant('{src}\bin\data3.bin'),       ExpandConstant('{app}'),            false, '', '', '', notPCFonFLY ) then break; 
         //if not ISPrecompExtract( 0, 0, ExpandConstant('{app}\data3.pcf'),  ExpandConstant('{app}'),  true                           ) then break; 
         //if not ISArcExtract    ( 0, 0, ExpandConstant('{src}\bin\data4.bin'),       ExpandConstant('{app}'),            false, '', '', '', notPCFonFLY ) then break; 
  
 //  примеры использования компонентов и всплывающего запроса следующего диска: 
  
         //if not ShowChangeDiskWindow('Пожалуйста, вставьте диск 2 и дождитесь его инициализации.', ExpandConstant('{src}'),'CODMW2_Disk2.arc'               ) then break; 
         //if not ISArcExtract ( 1, 0, ExpandConstant('{src}\bin\data1.bin'),  ExpandConstant('{app}'), false, '', '', '', notPCFonFLY ) then break; 
         //if not ISArcExtract ( 2, 0, ExpandConstant('{src}\bin\data1.bin'), ExpandConstant('{app}'), false, '', '', '', notPCFonFLY ) then break; 
         //if not ISArcExtract ( 3, 0, ExpandConstant('{src}\bin\data4.bin'),  ExpandConstant('{app}'), false, '', '', '', notPCFonFLY ) then break; 
         //if not ISArcExtract ( 4, 0, ExpandConstant('{src}\engvoice.arc'), ExpandConstant('{app}'), false, '', '', '', notPCFonFLY ) then break; 
         //if not ISArcExtract ( 5, 0, ExpandConstant('{src}\bin\data4.bin'), ExpandConstant('{app}'), false, '', '', '', notPCFonFLY ) then break; 
   (*    if not ISArcExtract ( 6, 0, ExpandConstant('{src}\engvoice.arc'), ExpandConstant('{app}'), false, '', '', '', notPCFonFLY ) then break; 
         if not ShowChangeDiskWindow('Пожалуйста, вставьте первый диск и дождитесь его инициализации.', ExpandConstant('{src}'),'CODMW_2.arc'               ) then break; 
  
 //  просто различные комбинации параметров в функциях распаковки 
  
         if not ISArcExtract    ( 0, 0, ExpandConstant('{src}\sds_ru2.arc'), ExpandConstant('{app}\data1'),  false, '', '', ExpandConstant('{app}\data1'), PCFonFLY) then break; 
         if not ISArcExtract    ( 0, 0, ExpandConstant('{src}\sds_ru.arc'),  ExpandConstant('{app}\data1'),  false, '', '', ExpandConstant('{app}\data1'), PCFonFLY) then break; 
  
         if not ISPrecompExtract( 0, 0, ExpandConstant('{src}\data1\*.pcf'),     ExpandConstant('{src}\data1'), false) then break; 
         if not IS7ZipExtract   ( 0, 0, ExpandConstant('{src}\data1\sds_ru.7z'), ExpandConstant('{src}\data1'), true,  '') then break; 
  
         if not ISRarExtract    ( 0, 0, ExpandConstant('{src}\data_*.rar'), ExpandConstant('{app}'), false, ''         ) then break; 
         if not ISRarExtract    ( 0, 0, ExpandConstant('{src}\*part1.rar'), ExpandConstant('{app}'), false, 'Password' ) then break; 
  
         if not IS7ZipExtract   ( 0, 0, ExpandConstant('{src}\data*.7z'), ExpandConstant('{app}\data1'), false, '' ) then break; 
         if not IS7ZipExtract   ( 0, 0, ExpandConstant('{src}\sound.7z'), ExpandConstant('{app}\data1'), false, '' ) then break; 
  
         if not ISArcExtract    ( 0, 33, ExpandConstant('{src}\dataR.arc'),   ExpandConstant('{app}\data1'),  false, '', '', '',notPCFonFLY) then break; 
         if not ISArcExtract    ( 0, 33, ExpandConstant('{src}\CODMW_*.arc'), ExpandConstant('{app}\data1'),  false, '', '', '',notPCFonFLY) then break; 
         if not ISArcExtract    ( 0, 34, ExpandConstant('{src}\dataR.arc'),   ExpandConstant('{app}\data1\'), false, '', '', '',notPCFonFLY) then break; 
  
         if not ISPrecompExtract( 0, 0, ExpandConstant('{src}\*.pcf'),     ExpandConstant('{app}\data1'), false) then break; 
         if not ISPrecompExtract( 0, 0, ExpandConstant('{src}\data0.pcf'), ExpandConstant('{app}\data1'), false) then break; 
  
         if not ISSRepExtract   ( 0, 0, ExpandConstant('{src}\*.srep'),      ExpandConstant('{app}\data1\'),         false) then break; 
         if not ISSRepExtract   ( 0, 0, ExpandConstant('{src}\data02.srep'), ExpandConstant('{app}\data1\data.pcf'), false) then break; 
 *) 
         MyError:=false; 
       until true; 
       ISDoneStop; 
     until true; 
     BtnSetVisibility(CancelUnpackingBtn, False); 
     BtnSetVisibility(hCancelBtn, True); 
     BtnSetEnabled(hCancelBtn, False); 
     ImgSetVisibility(PB2Img,True); 
     LabelStatus.Hide; 
     LabelPct.Hide; 
     LabelCurrFileName.Hide; 
     ProgressInfoLabel.Show; 
     if (Cancel <> 0) or MyError then HideComponent; 
   end; 
 end;[/more]