tuz1979
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору ;Название приложения #define MyAppName "Batman - Arkham Asylum GOTY" ;Заголовок #define MyAppName1 "Batman - Arkham Asylum GOTY" ;Екзешник #define ExeName "BmLauncher.exe" ;Рабочая папка #define WorkDir "{app}\Binaries" ;Место #define NeedSize "9.74 GB" #define NeedSizeInBytes "10462445624" #define NeedMem 256 ;#define SecondProgressBar #define Components ;Размер компонетлиста #define Short ;#define Long ;#define records #define facompress ;#define PrecompInside #define SrepInside ;#define MSCInside ;#define precomp "0.42" ;#define unrar ;#define XDelta ;#define PackZIP #include "Files\TransparentStatic.iss" #include "{tmp}\botva2.iss" [Setup] AppID={#MyAppName}_Seraph1 AppName={#MyAppName} AppVerName={#MyAppName} DefaultGroupName={#MyAppName} DefaultDirName={pf}\{#MyAppName} OutputBaseFilename=Installer setupiconfile=icon.ico UninstallFilesDir={userappdata}\{#MyAppName}_unistall AppPublisher=Seraph1 VersionInfoCopyright=Seraph1 ExtraDiskSpaceRequired={#NeedSizeInBytes} [Messages] rus.ExitSetupMessage=Выйти из программы установки? eng.ExitSetupMessage=Exit Setup program? [Languages] Name: rus; MessagesFile: compiler:Languages\Russian.isl Name: eng; MessagesFile: compiler:Default.isl [Files] Source: "{tmp}\isxdl.dll"; DestDir: "{tmp}"; MinVersion: 0.0,5.0; Flags: deleteafterinstall dontcopy Source: "{tmp}\russian.ini"; DestDir: "{tmp}"; MinVersion: 0.0,5.0; Flags: deleteafterinstall dontcopy Source: "{tmp}\botva2.dll"; DestDir: "{tmp}"; MinVersion: 0.0,5.0; Flags: deleteafterinstall dontcopy Source: "{tmp}\botva2.iss"; DestDir: "{tmp}"; MinVersion: 0.0,5.0; Flags: deleteafterinstall dontcopy Source: "{tmp}\CallbackCtrl.dll"; DestDir: "{tmp}"; MinVersion: 0.0,5.0; Flags: deleteafterinstall dontcopy Source: "{tmp}\btn1.png"; DestDir: "{tmp}"; MinVersion: 0.0,5.0; Flags: deleteafterinstall dontcopy Source: "{tmp}\btn2.png"; DestDir: "{tmp}"; MinVersion: 0.0,5.0; Flags: deleteafterinstall dontcopy Source: "{tmp}\btn3.png"; DestDir: "{tmp}"; MinVersion: 0.0,5.0; Flags: deleteafterinstall dontcopy Source: "{tmp}\btn4.png"; DestDir: "{tmp}"; MinVersion: 0.0,5.0; Flags: deleteafterinstall dontcopy Source: "{tmp}\btn5.png"; DestDir: "{tmp}"; MinVersion: 0.0,5.0; Flags: deleteafterinstall dontcopy Source: "{tmp}\dotnetfx35setup.exe"; DestDir: "{tmp}"; MinVersion: 0.0,5.0; Flags: deleteafterinstall ignoreversion dontcopy ; Source: "{app}\res_mods\0.8.8\audio\"; DestDir: "{app}\res_mods\0.8.8\audio"; Components: g0\c03\c0302 g0\c04 g0\c05\c0504; MinVersion: 0.0,5.0; Flags: ignoreversion Source: Files\0.bmp; DestDir: {tmp}; Flags: dontcopy Source: Files\1.bmp; DestDir: {tmp}; Flags: dontcopy Source: Files\2.bmp; DestDir: {tmp}; Flags: dontcopy Source: Files\3.bmp; DestDir: {tmp}; Flags: dontcopy Source: Files\btnimage.bmp; DestDir: {tmp}; Flags: dontcopy Source: Files\Button.bmp; DestDir: {tmp}; Flags: dontcopy Source: Files\CallbackCtrl.dll; Flags: dontcopy Source: Files\InnoCallback.dll; Flags: dontcopy Source: Isdone\English.ini; DestDir: {tmp}; Flags: dontcopy Source: Isdone\Russian.ini; DestDir: {tmp}; Flags: dontcopy Source: Isdone\unarc.dll; DestDir: {tmp}; Flags: dontcopy Source: Isdone\ISDone.dll; DestDir: {tmp}; Flags: dontcopy #ifdef records Source: output\records.inf; DestDir: {tmp}; Flags: dontcopy #endif #ifdef PrecompInside Source: Isdone\CLS-precomp.dll; DestDir: {tmp}; Flags: dontcopy Source: Isdone\packjpg_dll.dll; DestDir: {tmp}; Flags: dontcopy Source: Isdone\packjpg_dll1.dll; DestDir: {tmp}; Flags: dontcopy Source: Isdone\precomp.exe; DestDir: {tmp}; Flags: dontcopy Source: Isdone\zlib1.dll; DestDir: {tmp}; Flags: dontcopy #endif #ifdef SrepInside Source: Isdone\CLS-srep.dll; DestDir: {tmp}; Flags: dontcopy #endif #ifdef MSCInside Source: Isdone\CLS-MSC.dll; DestDir: {tmp}; Flags: dontcopy #endif #ifdef facompress Source: Isdone\facompress.dll; DestDir: {tmp}; Flags: dontcopy #endif #ifdef precomp #if precomp == "0.38" ; Source: Isdone\precomp038.exe; DestDir: {tmp}; Flags: dontcopy #else #if precomp == "0.4" ; Source: Isdone\precomp040.exe; DestDir: {tmp}; Flags: dontcopy #else #if precomp == "0.41" ; Source: Isdone\precomp041.exe; DestDir: {tmp}; Flags: dontcopy #else #if precomp == "0.42" ; Source: Isdone\precomp042.exe; DestDir: {tmp}; Flags: dontcopy #else ; Source: Isdone\precomp038.exe; DestDir: {tmp}; Flags: dontcopy ; Source: Isdone\precomp040.exe; DestDir: {tmp}; Flags: dontcopy ; Source: Isdone\precomp041.exe; DestDir: {tmp}; Flags: dontcopy ; Source: Isdone\precomp042.exe; DestDir: {tmp}; Flags: dontcopy #endif #endif #endif #endif #endif #ifdef unrar Source: Isdone\Unrar.dll; DestDir: {tmp}; Flags: dontcopy #endif #ifdef XDelta Source: Isdone\XDelta3.dll; DestDir: {tmp}; Flags: dontcopy #endif #ifdef PackZIP Source: Isdone\7z.dll; DestDir: {tmp}; Flags: dontcopy Source: Isdone\packZIP.exe; DestDir: {tmp}; Flags: dontcopy #endif [UninstallDelete] Type: filesandordirs; Name: {app} [CustomMessages] rus.Icons=Создать ярлык на рабочем столе rus.Group=Создать ярлыки в меню "Пуск" rus.Welcome1='{#MyAppName1}' rus.Welcome2=%nВас приветствует Мастер установки. Рекомендуется закрыть%nантивирусные пакеты,а так же все прочие приложения. rus.Finished1='{#MyAppName1}' rus.Finished2=%nУстановка успешко завершена. Запуск можно произвести при помощи%nсоответствующей иконки в меню Пуск или на рабочем столе. rus.FreeSpace=Доступно места на диске: rus.NeedSpace=Требуется места на диске: rus.ExtractedFile=Извлекается файл: rus.Extracted=Распаковка архивов... rus.CancelButton=Отменить распаковку rus.Error=Ошибка распаковки! rus.Error2=Завершение установки... rus.Error1=Установка не была завершена успешно. rus.ElapsedTime=Прошло: rus.RemainingTime=Осталось времени: rus.EstimatedTime=Всего: rus.AllElapsedTime=Время установки: rus.voice=Язык озвучки rus.interface=Язык интерфейса rus.game=Язык игры rus.eng=Английский rus.rus=Русский rus.rus1=Русский rus.play1=Играть {#MyAppName} rus.unins=Удалить {#MyAppName} rus.soft=Дополнительный софт rus.vc=Microsoft Visual C++ Redist rus.vc1=Установка Microsoft Visual C++ Redist... rus.dx=DirectX rus.dx1=Обновление DirectX... rus.dt=Установить Microsoft Net Framework 3.5 rus.dt1=Установка Microsoft Net Framework 3.5... rus.px=Nvidia PhysX rus.live=Games for Windows LIVE rus.Install=Установить rus.installing=Установка Дополнительного программного обеспечения... rus.del=Удалить сохраненные игры? rus.dlc=Загружаемый контент (DLC) rus.interfaceru=Русский текст и Английская Озвучка (при выборе русского языка в лаунчере) rus.disk=Вставте следующий диск. rus.pb=Установить Punk Buster rus.ger=Немецкий rus.res=Изменить Разрешение rus.ita=Итальянский rus.pol=Польский rus.por=Португальский rus.spa=Испанский rus.fre=Французский rus.rc=Rockstar Games Social Club eng.FreeSpace=Free space on disk: eng.NeedSpace=Need space on disk: eng.Welcome1='{#MyAppName}' eng.Welcome2=%nWelcome to installation program. It is recommended to switch off%nanti-virus packages and also to close other applications. eng.Finished2=%nInstallation was completed successfully.%nThe application may be launched by selected icons eng.Icons=Create a desktop icon eng.Group=Create a Start Menu icon eng.FreeSpace=Free space on disc: eng.NeedSpace=Required space on disc: eng.ExtractedFile=Extracting File: eng.Extracted=Unpacking archives... eng.CancelButton=Cancel eng.Error=Error unpacking! eng.Error2=Finishing the Installation... eng.Error1=lnstallation wasn't completed successfully. eng.ElapsedTime=Elapsed Time: eng.RemainingTime=Remaining time: eng.EstimatedTime=Estimated Time: eng.AllElapsedTime=Installing time: eng.voice=Voice language eng.interface=Interface language eng.game=Game language eng.eng=English eng.rus=Russian eng.rus1=Russian eng.ita=Italian eng.pol=Polish eng.por=Portuguese eng.spa=Spanish eng.fre=French eng.play1=Play {#MyAppName} eng.unins=Uninstall {#MyAppName} eng.soft=Additional software eng.vc=Visual C++ Redist eng.vc1=Installing Microsoft Visual C++ Redist... eng.dt=Install Microsoft Net Framework 3.5 eng.dt1=Installing Microsoft Net Framework 3.5... eng.live=Games for Windows LIVE eng.px=Nvidia PhysX eng.dx=DirectX eng.dx1=Updating DirectX... eng.install=Install eng.installing=Installing Additional Software... eng.del=Delete saved games? eng.dlc=Downloadable Content (DLC) eng.interfaceru=Russian text and English Voice (if you choose russian language if launcher) eng.pb=Install Punk Buster eng.ger=German eng.res=Change Resolution [Icons] ;Name: {group}\{cm:unins}; Filename: {uninstallexe}; Check: MakeStartMenuIcon and CheckError ;Name: {group}\Settlers 6; Filename: {app}\Play Settlers 6.exe; WorkingDir: {app}; Check: MakeStartMenuIcon and CheckError ;Name: {userdesktop}\Settlers 6; Filename: {app}\Play Settlers 6.exe; WorkingDir: {app}; Check: MakeDesktopIcon and CheckError ;Name: {group}\Settlers 6 - The Eastern Realm; Filename: {app}\Play Settlers 6 - The Eastern Realm.exe; WorkingDir: {app}; Check: MakeStartMenuIcon and CheckError ;Name: {userdesktop}\Settlers 6 - The Eastern Realm; Filename: {app}\Play Settlers 6 - The Eastern Realm.exe; WorkingDir: {app}; Check: MakeDesktopIcon and CheckError Name: {group}\{cm:unins}; Filename: {uninstallexe}; Check: MakeStartMenuIcon and CheckError Name: {group}\{cm:play1}; Filename: {#WorkDir}\{#ExeName}; WorkingDir: {#WorkDir}; Check: MakeStartMenuIcon and CheckError; Parameters: -scofflineonly Name: {userdesktop}\{#MyAppName}; Filename: {#WorkDir}\{#ExeName}; WorkingDir: {#WorkDir}; Check: MakeDesktopIcon and CheckError; Parameters: -scofflineonly #ifdef Components [Types] Name: full; Description: Full installation; Flags: iscustom [Components] //Name: pack; Description: {cm:pack}; Types: full Name: text; Description: {cm:game}; Flags: fixed checkablealone; Types: full Name: text\eng; Description: {cm:eng}; Flags: exclusive Name: text\rus; Description: {cm:rus}; Flags: exclusive; Types: full Name: soft; Description: {cm:soft}; Types: full Name: soft\dx; Description: {cm:dx}; Types: full Name: soft\vc; Description: {cm:vc}; Types: full Name: soft\px; Description: {cm:px}; Types: full Name: soft\live; Description: {cm:live}; Types: full ;Name: soft\rc\del; Description: Delete {cm:rc}; Types: full ;Name: text\rus1; Description: {cm:rus1}; Flags: exclusive ;Name: Voice; Description: {cm:voice}; Flags: fixed checkablealone; Types: full ;Name: Voice\eng; Description: {cm:eng}; Flags: exclusive ;Name: Voice\rus; Description: {cm:rus}; Flags: exclusive ;Name: Voice\ger; Description: {cm:ger}; Flags: exclusive ;Name: dx; Description: {cm:dx}; Types: full ;Name: soft\live; Description: {cm:live}; Types: full ;Name: soft\pb; Description: {cm:pb}; Types: full #endif [Run] Filename: {app}\Redist\DirectX\DXSETUP.exe; Components: soft\dx; Check: CheckError Filename: {app}\Redist\vcredist_x86.exe; Components: soft\vc; Check: CheckError Filename: {app}\Redist\PhysX.exe; Components: soft\px; Check: CheckError Filename: {app}\Redist\gfwlivesetup.exe; Components: soft\vc; Check: CheckError ;Filename: {app}\Redist\pbsetup.exe; WorkingDir: {app}\Redist; Components: soft\pb; Check: CheckError [Registry] ;{app}: ; Flags: uninsdeletekey ;Root: HKLM; SubKey: SOFTWARE\Ubisoft\Far Cry 2; ValueType: string; ValueName: InstallDir; ValueData: {app}; Flags: uninsdeletekey Root: HKLM; SubKey: SOFTWARE\RocksteadyLtd\Batman Arkham Asylum GOTY; ValueType: string; ValueName: Install Directory; ValueData: {app}; Flags: uninsdeletekey Root: HKLM; SubKey: SOFTWARE\RocksteadyLtd\Batman Arkham Asylum GOTY; ValueType: dword; ValueName: LaunchPostInstall; ValueData: $00000000; Flags: uninsdeletekey [INI] Filename: {app}\BmGame\Config\Installer.ini; Section: Language; Key: Language; String: rus; Components: text\rus ;Filename: "{app}\extra1\bba\s6lng.ini"; Section: "Settlers6"; Key: "Language"; String: "en"; Components: text\eng; [Code] //******************************************* [Начало - Элементы страниц] ***************************************************// var IsInit:Boolean; n: Integer; ResultStr:string; ResultCode: Integer; BorderWidth: Integer; BGImage, BTNImage, ReadyBitmap: TBitmapImage; BGImageStream, BTNImageStream: TMemoryStream; procedure InitializeWizard1(); begin with WizardForm do begin WizardForm.BorderIcons:= [biSystemMenu]; DirBrowseButton.Left:=390; DirBrowseButton.Top:=105; DirEdit.Left:=90; DirEdit.Top:= 105; DirBrowseButton.Width:=80; DirEdit.width:=290; GroupBrowseButton.Left:=390; GroupBrowseButton.Top:=105; GroupBrowseButton.Width:=80 GroupEdit.Left:=80; GroupEdit.Top:= 105; GroupEdit.width:=300; GroupEdit.Color:= ClBlack NextButton.BringToFront; NextButton.Left:=300; NextButton.Top:=270; NextButton.Width:=80; BackButton.BringToFront; BackButton.Left:=210; BackButton.Top:=270; BackButton.Width:=80; CancelButton.BringToFront; CancelButton.Left:=390; CancelButton.Top:=270; CancelButton.Width:=80; Font.Name:='Trebuchet MS'; DirEdit.Color:=clBlack; Font.Color:=clWhite; ProgressGauge.Top:=110; ProgressGauge.Left:=235; ProgressGauge.Width:=337; ReadyMemo.Left:=100; ReadyMemo.Top:= 100; ReadyMemo.Width:=350; ReadyMemo.Height:=166; ReadyMemo.Font.Color:= clWhite; ReadyMemo.ScrollBars:= ssNone; //ssVertical ReadyMemo.Color:= clBlack; InfoBeforeMemo.Left:=228; InfoBeforeMemo.Top:=90; InfoBeforeMemo.Width:=350; InfoBeforeMemo.Height:=193; InfoAfterMemo.Left:=228; InfoAfterMemo.Top:=90; InfoAfterMemo.Width:=350; InfoAfterMemo.Height:=193; BGImageStream := TMemoryStream.Create; ExtractTemporaryFileToStream('0.bmp', BGImageStream); BGImageStream.Position := 0; BTNImageStream := TMemoryStream.Create; ExtractTemporaryFileToStream('btnimage.bmp', BTNImageStream); BTNImageStream.Position := 0; BGImage := TBitmapImage.Create(WizardForm); BGImage.Bitmap.LoadFromStream(BGImageStream); BTNImage := TBitmapImage.Create(WizardForm); BTNImage.Bitmap.LoadFromStream(BTNImageStream); with WizardForm.ComponentsList do begin ComponentsList.Left:=40; ComponentsList.Top:=80; //80 ComponentsList.Width:=193; ComponentsList.Height:=147; ComponentsList.Font.Color:= clWhite; ComponentsList.Color:= clBlack; ComponentsList.Font.Style:=[]; ComponentsList.Font.Name:='Trebuchet'; ComponentsList.BorderStyle := bsNone; //ComponentsList.Font.Height:=15; #ifdef Long BorderWidth := (WizardForm.ComponentsList.Width-WizardForm.ComponentsList.ClientWidth) div 2; if ItemCount > 5 then LoadBGBmpFromBitmap(BGImage.Bitmap, WizardForm.ComponentsList.Left+BorderWidth/4, WizardForm.ComponentsList.Top+BorderWidth/4) else LoadBGBmpFromBitmap(BGImage.Bitmap, WizardForm.ComponentsList.Left+BorderWidth, WizardForm.ComponentsList.Top+BorderWidth); LoadBtnBmpFromBitmap(btnimage.Bitmap); #endif #ifdef Short BorderWidth := (WizardForm.ComponentsList.Width-WizardForm.ComponentsList.ClientWidth) div 2; LoadBGBmpFromBitmap(BGImage.Bitmap, WizardForm.ComponentsList.Left+BorderWidth, WizardForm.ComponentsList.Top+BorderWidth); LoadBtnBmpFromBitmap(btnimage.Bitmap); #endif end; end; end; //******************************************* [Конец - Элементы страниц] ***************************************************// //******************************************* [Начало - Размер окна инсталлятора] ***************************************************// procedure InitializeWizard2(); begin //WizardForm.Width:=506; //WizardForm.Height:=332; WizardForm.ClientWidth:=500; WizardForm.ClientHeight:=300; WizardForm.Position:=poScreenCenter; //6 28 with WizardForm do begin InnerNotebook.Left:=0; InnerNotebook.Top:=0; InnerNotebook.Width:=500; //Ширина инсталлятора InnerNotebook.Height:=300; //Высота инсталлятора OuterNotebook.Left:=0; OuterNotebook.Top:=0; OuterNotebook.Width:=500; //Ширина инсталлятора OuterNotebook.Height:=300; //Высота инсталлятора end; end; //******************************************* [Конец - Размер окна инсталлятора] ***************************************************// //******************************************* [Начало - Наложение изображений] ***************************************************// var BmpFile: TBitmapImage; //Наложение изображений MyStream: TMemoryStream; procedure InitializeWizard3(); begin ExtractTemporaryFile('0.bmp'); ExtractTemporaryFile('1.bmp'); ExtractTemporaryFile('2.bmp'); ExtractTemporaryFile('3.bmp'); BmpFile:= TBitmapImage.Create(WizardForm); BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp')); BmpFile.SetBounds(0, 0, 500, 300); BmpFile.Parent:= WizardForm.WelcomePage; BmpFile:= TBitmapImage.Create(WizardForm); BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\2.bmp')); BmpFile.SetBounds(0, 0, 500, 300); BmpFile.Parent:= WizardForm.InfoBeforePage; BmpFile:= TBitmapImage.Create(WizardForm); BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\2.bmp')); BmpFile.SetBounds(0, 0, 500, 300); BmpFile.Parent:= WizardForm.SelectDirPage; BmpFile:= TBitmapImage.Create(WizardForm); BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\3.bmp')); BmpFile.SetBounds(0, 0, 500, 300); BmpFile.Stretch:= true BmpFile.Parent:= WizardForm.SelectProgramGroupPage; BmpFile:= TBitmapImage.Create(WizardForm); BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\0.bmp')); BmpFile.SetBounds(0, 0, 500, 300); BmpFile.Stretch:= true BmpFile.Parent:= WizardForm.SelectComponentsPage; BmpFile:= TBitmapImage.Create(WizardForm); BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\2.bmp')); BmpFile.SetBounds(0, 0, 500, 300); BmpFile.Stretch:= true BmpFile.Parent:= WizardForm.ReadyPage; BmpFile:= TBitmapImage.Create(WizardForm); BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp')); BmpFile.SetBounds(0, 0, 500, 300); BmpFile.Stretch:= true BmpFile.Parent:= WizardForm.InstallingPage; BmpFile:= TBitmapImage.Create(WizardForm); BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\2.bmp')); BmpFile.SetBounds(0, 0, 500, 300); BmpFile.Stretch:= true BmpFile.Parent:= WizardForm.InfoAfterPage; BmpFile:= TBitmapImage.Create(WizardForm); BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp')); BmpFile.SetBounds(0, 0, 500, 300); BmpFile.Stretch:= true BmpFile.Parent:= WizardForm.FinishedPage; MyStream:= tMemoryStream.Create(); ExtracttemporaryFileToStream('0.bmp', MyStream); MyStream.SaveToFile(ExpandConstant('{tmp}\0.bmp')); DeleteFile(ExpandConstant('{tmp}')+'\0.bmp'); ExtracttemporaryFileToStream('1.bmp', MyStream); MyStream.SaveToFile(ExpandConstant('{tmp}\1.bmp')); DeleteFile(ExpandConstant('{tmp}')+'\1.bmp'); ExtracttemporaryFileToStream('2.bmp', MyStream); MyStream.SaveToFile(ExpandConstant('{tmp}\2.bmp')); DeleteFile(ExpandConstant('{tmp}')+'\2.bmp'); ExtracttemporaryFileToStream('3.bmp', MyStream); MyStream.SaveToFile(ExpandConstant('{tmp}\3.bmp')); DeleteFile(ExpandConstant('{tmp}')+'\3.bmp'); with WizardForm do begin MainPanel.Hide; Finishedlabel.Hide; DiskSpaceLabel.Hide; ProgressGauge.Hide; TypesCombo.Hide; ComponentsDiskSpaceLabel.Hide; FilenameLabel.Hide; StatusLabel.Hide; end; end; //******************************************* [Конец - Наложение изображений] ***************************************************// //******************************************* [Начало - Лейблы] ***************************************************// var WLabel1, WLabel2, StatusLabel, FilenameLabel: TLabel; procedure InitializeWizard4; begin StaticSetTransparent; //****************[WelcomePage] WizardForm.WelcomeLabel1.Font.Color:=clWhite; WizardForm.WelcomeLabel1.Font.Name:='Trebuchet MS'; WizardForm.WelcomeLabel1.Left:=10; WizardForm.WelcomeLabel1.WordWrap:=True; // WizardForm.WelcomeLabel1.Alignment := taCenter; WizardForm.WelcomeLabel1.Top:=175; WizardForm.WelcomeLabel1.Width:=351; WizardForm.WelcomeLabel1.Caption:= ExpandConstant('{cm:welcome1}'); WizardForm.WelcomeLabel1.Height:=20; WizardForm.WelcomeLabel1.Font.Style:=[fsBold]; WizardForm.WelcomeLabel1.Font.Height:=20; WizardForm.WelcomeLabel2.Font.Color:=clWhite; WizardForm.WelcomeLabel2.Font.Name:='Trebuchet MS'; WizardForm.WelcomeLabel2.Font.Height:=17; WizardForm.WelcomeLabel2.Left:=10; WizardForm.WelcomeLabel2.Top:=183 WizardForm.WelcomeLabel2.Caption:= ExpandConstant('{cm:welcome2}'); WizardForm.WelcomeLabel2.Width:=500; //****************[WelcomePage] //****************[SelectDirPage] WizardForm.SelectDirLabel.Font.Color:=clWhite; WizardForm.SelectDirLabel.Font.Name:='Trebuchet MS'; WizardForm.SelectDirLabel.Font.Height:=17; WizardForm.SelectDirLabel.Left:=40; WizardForm.SelectDirLabel.Top:=75; WizardForm.SelectDirLabel.Width:=351; WizardForm.SelectDirLabel.Height:=20; WizardForm.SelectDirBrowseLabel.Font.Color:=clWhite; WizardForm.SelectDirBrowseLabel.Font.Name:='Trebuchet MS'; WizardForm.SelectDirBrowseLabel.Left:=40; WizardForm.SelectDirBrowseLabel.Font.Height:=17; WizardForm.SelectDirBrowseLabel.Top:=142; WizardForm.SelectDirBrowseLabel.Width:=351; WizardForm.SelectDirBrowseLabel.Height:=33; //****************[SelectDirPage] //****************[SelectComponentsPage] WizardForm.SelectComponentsLabel.Font.Color:=clWhite; WizardForm.SelectComponentsLabel.Font.Name:='Trebuchet MS'; WizardForm.SelectComponentsLabel.Font.Height:=17; WizardForm.SelectComponentsLabel.Left:=260; WizardForm.SelectComponentsLabel.Top:=110; WizardForm.SelectComponentsLabel.Width:=200; WizardForm.SelectComponentsLabel.Height:=300; //****************[SelectComponentsPage] //****************[InfoBeforePage] WizardForm.InfoBeforeClickLabel.Font.Color:=clWhite; WizardForm.InfoBeforeClickLabel.Font.Name:='Trebuchet MS'; WizardForm.InfoBeforeClickLabel.Font.Height:=17; WizardForm.InfoBeforeClickLabel.Left:=10; WizardForm.InfoBeforeClickLabel.Top:=290; //****************[InfoBeforePage] //****************[SelectProgramGroupPage] WizardForm.SelectStartMenuFolderLabel.Font.Color:=clWhite; WizardForm.SelectStartMenuFolderLabel.Font.Name:='Trebuchet MS'; WizardForm.SelectStartMenuFolderLabel.Font.Height:=17; WizardForm.SelectStartMenuFolderLabel.Left:=40; WizardForm.SelectStartMenuFolderLabel.Top:=75; WizardForm.SelectStartMenuFolderBrowseLabel.Font.Color:=clWhite; WizardForm.SelectStartMenuFolderBrowseLabel.Font.Name:='Trebuchet MS'; WizardForm.SelectStartMenuFolderBrowseLabel.Font.Height:=17; WizardForm.SelectStartMenuFolderBrowseLabel.Left:=40; WizardForm.SelectStartMenuFolderBrowseLabel.Top:=190; WizardForm.SelectStartMenuFolderBrowseLabel.Width:=351; WizardForm.SelectStartMenuFolderBrowseLabel.Height:=33; //****************[SelectProgramGroupPage] //****************[ReadyPage] WizardForm.ReadyLabel.Font.Color:=clWhite; WizardForm.ReadyLabel.Font.Name:='Trebuchet MS'; WizardForm.ReadyLabel.Left:=10; WizardForm.ReadyLabel.Top:=275; WizardForm.ReadyLabel.Width:=0; //****************[ReadyPage] //****************[InstallingPage] begin StatusLabel:= TLabel.Create(WizardForm); with StatusLabel do begin Left:=228; Top:=88; Width:=0; Height:= 0; AutoSize:= False; Transparent := True; Parent:= WizardForm.InstallingPage; Font.Name:= 'Trebuchet MS'; Font.Height:= 17; end; end; //****************[InstallingPage] //****************[InfoAfterPage] WizardForm.InfoAfterClickLabel.Font.Color:=clWhite; WizardForm.InfoAfterClickLabel.Font.Name:='Trebuchet MS'; WizardForm.InfoAfterClickLabel.Left:=178; WizardForm.InfoAfterClickLabel.Top:=290; //****************[InfoAfterPage] //****************[FinishedPage] WizardForm.FinishedHeadingLabel.Font.Color:=clWhite; WizardForm.FinishedHeadingLabel.Font.Name:='Trebuchet MS'; WizardForm.FinishedHeadingLabel.Left:=10; WizardForm.FinishedHeadingLabel.Top:=175; WizardForm.FinishedHeadingLabel.Width:=400; WizardForm.FinishedHeadingLabel.Height:=20; WizardForm.FinishedHeadingLabel.Font.Height:=20; WizardForm.FinishedHeadingLabel.Font.Style:=[fsBold]; WizardForm.FinishedHeadingLabel.Caption:= ExpandConstant('{cm:Finished1}'); WLabel1 := TLabel.Create(WizardForm); WLabel1.Left := 10; WLabel1.Top := 183; WLabel1.Width :=500; WLabel1.Height :=10; WLabel1.Font.Color:= clwhite; WLabel1.Font.Name:='Trebuchet MS'; WLabel1.Font.Height:=17; WLabel1.Caption := ExpandConstant('{cm:finished2}'); WLabel1.Transparent := True; WLabel1.Parent := WizardForm.FinishedPage; WLabel2 := TLabel.Create(WizardForm); WLabel2.Left := 87; WLabel2.Top := 190; WLabel2.Width := 209; WLabel2.Height := 13; WLabel2.Font.Color:= clwhite; WLabel2.Font.Name:='Trebuchet MS'; WLabel2.Font.Height:=17; WLabel2.Caption := ExpandConstant('{cm:NeedSpace} {#NeedSize}'); WLabel2.Transparent := True; WLabel2.Parent := WizardForm.SelectDirPage; //****************[FinishedPage] end; //******************************************* [Конец - Лейблы] ***************************************************// //******************************************* [Начало - Лейблы 2] ***************************************************// type TTimerProc = procedure(HandleW, Msg, idEvent, TimeSys: LongWord); var TextTimer: LongWord; function WrapTimerProc(callback: TTimerProc; Paramcount: Integer): longword; external 'wrapcallback@files:innocallback.dll stdcall'; function SetTimer(hWnd, nIDEvent, uElapse, lpTimerFunc: LongWord): longword; external 'SetTimer@user32'; function KillTimer(hWnd, nIDEvent: LongWord): LongWord; external 'KillTimer@user32 stdcall delayload'; Procedure TextProc(h, msg, idevent, dwTime: Longword); Begin //FilenameLabel.Caption:= WizardForm.FilenameLabel.Caption; // StatusLabel.Caption:= WizardForm.StatusLabel.Caption; End; procedure DeinitializeSetup1(); begin KillTimer(0, TextTimer); end; procedure InitializeWizard5(); begin FilenameLabel:= TLabel.Create(WizardForm); with FilenameLabel do begin Left:=228; Top:=140; Width:= 0; Height:= 0; AutoSize:= False; Transparent := True; Parent:= WizardForm.InstallingPage; Font.Name:= 'Trebuchet MS'; Font.Height:= 17; end; end; //******************************************* [Конец - Лейблы 2] ***************************************************// //******************************************* [ 2 обзора и ярлыки ] ***************************************************// var StartMenuIcon,DesktopIcon: TCheckBox; DesktopIconLabel, StartMenuIconLabel: TLabel; function MakeDesktopIcon: Boolean; begin Result:=DesktopIcon.Checked; end; function MakeStartMenuIcon: Boolean; begin Result:=StartMenuIcon.Checked;end; procedure DesktopIconOnClick(Sender: TObject); begin if DesktopIcon.Checked = False then DesktopIcon.Checked:= True else DesktopIcon.Checked:= False; end; procedure StartMenuIconOnClick(Sender: TObject); begin if StartMenuIcon.Checked = False then StartMenuIcon.Checked:= True else StartMenuIcon.Checked:= False; end; procedure NoStartMenuIcon(Sender: TObject); begin if StartMenuIcon.Checked = false then begin wizardform.GroupEdit.enabled:= false; wizardform.GroupBrowseButton.enabled:= false; end else begin wizardform.GroupEdit.enabled:= true; wizardform.GroupBrowseButton.enabled:= true; end; end; procedure InitializeWizard6(); begin StatusLabel.Hide; FilenameLabel.Hide; DesktopIcon:= TCheckBox.Create(WizardForm); with DesktopIcon do begin Parent:= WizardForm.SelectProgramGroupPage; Left:=240; Top:= 161; Width:= 13; Height:= 13; TabOrder:= 2; Checked:= True; end; DesktopIconLabel := TLabel.Create(WizardForm); with DesktopIconLabel do begin AutoSize:=true; SetBounds(255, 160, 0, 0); WordWrap:= False; // ShowAccelChar := False; Transparent:=True; Font.Name:= 'Trebuchet MS'; Font.Height:= 17; Font.Color:=clWhite; Caption := ExpandConstant('{cm:Icons}'); Parent := wizardform.SelectProgramGroupPage; OnClick:= @DesktopIconOnClick; end; StartMenuIcon:= TCheckBox.Create(WizardForm); with StartMenuIcon do begin Parent:= WizardForm.SelectProgramGroupPage; Left:=40; Top:= 161; Width:= 13; Height:= 13; TabOrder:= 2; Checked:= True; OnClick:= @NoStartMenuIcon; end; StartMenuIconLabel := TLabel.Create(WizardForm); with StartMenuIconLabel do begin AutoSize:=true; SetBounds(55, 160, 0, 0); WordWrap:= False; // ShowAccelChar := False; Transparent:=True; Font.Name:= 'Trebuchet MS'; Font.Height:= 17; Font.Color:=clWhite; Caption := ExpandConstant('{cm:Group}'); Parent := wizardform.SelectProgramGroupPage; OnClick:= @StartMenuIconOnClick; end; end; //******************************************* [ 2 обзора и ярлыки ] ***************************************************// //******************************************* [ Место ] ***************************************************// var NeedSpaceLabel,FreeSpaceLabel: TLabel; FreeMB, TotalMB: Cardinal; SizeStr: String; SizeInt: Integer; SymbolNumber: Integer; Function NumToStr(Float: Extended): String; Begin Result:= Format('%.2n', [Float]); StringChange(Result, ',', '.'); while ((Result[Length(Result)] = '0') or (Result[Length(Result)] = '.')) and (Pos('.', Result) > 0) do SetLength(Result, Length(Result)-1); End; function GetSize(): Integer; begin SizeStr:= WizardForm.DiskSpaceLabel.Caption; for SymbolNumber:= 97 to 122 do begin while (Pos(Chr(SymbolNumber), SizeStr) > 0) do Delete(SizeStr, Pos(Chr(SymbolNumber), SizeStr),1); //Находим все символы нижнего регистра и удаляем while (Pos(AnsiUppercase(Chr(SymbolNumber)), SizeStr) > 0) do Delete(SizeStr, Pos(AnsiUppercase(Chr(SymbolNumber)), SizeStr),1); end; //Находим все символы верхнего регистра и удаляем for SymbolNumber:= 192 to 255 do begin while (Pos(Chr(SymbolNumber), SizeStr) > 0) do Delete(SizeStr, Pos(Chr(SymbolNumber), SizeStr),1); end; //Находим все символы нижнего регистра и удаляем while (Pos('.', SizeStr) > 0) do Delete(SizeStr, Pos('.', SizeStr), 1) //Удаляем точки Delete(SizeStr, Pos(',', SizeStr), 5) //Удаляем дробную часть //Result:= StrToInt(Trim(SizeStr)); //Переводим в число end; function CompareNum(FirstNum, SecondNum: Integer): Boolean; begin if FirstNum < SecondNum then Result:= False else Result:= True; end; Function MbOrTb(Byte: Extended): String; begin if Byte < 1024 then Result:= NumToStr(Byte) + ' MB' else if Byte/1024 < 1024 then Result:= NumToStr(round(Byte/1024*100)/100) + ' GB' else Result:= NumToStr(round((Byte/(1024*1024))*100)/100) + ' TB' end; procedure GetFreeSpaceCaption(Sender: TObject); var Path: String; begin Path := ExtractFileDrive(WizardForm.DirEdit.Text); GetSpaceOnDisk(Path, True, FreeMB, TotalMB); FreeSpaceLabel.Caption:= ExpandConstant('{cm:FreeSpace} ') + MbOrTb(FreeMB) if WizardForm.CurPageID = wpSelectDir then begin WizardForm.NextButton.Enabled:= CompareNum(FreeMB, SizeInt) end; end; procedure InitializeWizard7(); begin WizardForm.DiskSpaceLabel.Hide; SizeInt:= GetSize; FreeSpaceLabel := TLabel.Create(WizardForm); FreeSpaceLabel.SetBounds(87, 210, 209, 13) FreeSpaceLabel.Parent := WizardForm.SelectDirPage; FreeSpaceLabel.Transparent:=true; FreeSpaceLabel.Font.Name:= 'Trebuchet MS'; FreeSpaceLabel.Font.Height:= 17; WizardForm.DirEdit.OnChange:= @GetFreeSpaceCaption; WizardForm.DirEdit.Text:= WizardForm.DirEdit.Text + #0; end; //******************************************* [ Место ] ***************************************************// //******************************************* [Начало - Текстурирования кнопок] ***************************************************// const ButtonWidth = 80; ButtonHeight = 23; bidBack = 0; bidNext = 1; bidCancel = 2; bidDirBrowse = 3; bidGroupBrowse = 4; var ButtonPanel: array [0..4] of TPanel; ButtonImage: array [0..4] of TBitmapImage; ButtonLabel: array [0..4] of TLabel; procedure ButtonLabelClick(Sender: TObject); var Button: TButton; begin ButtonImage[TLabel(Sender).Tag].Left:=0 case TLabel(Sender).Tag of bidBack: Button:=WizardForm.BackButton bidNext: Button:=WizardForm.NextButton bidCancel: Button:=WizardForm.CancelButton bidDirBrowse: Button:=WizardForm.DirBrowseButton bidGroupBrowse: Button:=WizardForm.GroupBrowseButton else Exit end Button.OnClick(Button) end; procedure ButtonLabelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if ButtonLabel[TLabel(Sender).Tag].Enabled then ButtonImage[TLabel(Sender).Tag].Left:=-ButtonWidth end; procedure ButtonLabelMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin ButtonImage[TLabel(Sender).Tag].Left:=0 end; procedure LoadButtonImage(AButton: TButton; AButtonIndex: integer); var Image: TBitmapImage; Panel: TPanel; Labl: TLabel; begin Panel:=TPanel.Create(WizardForm) Panel.Left:=AButton.Left Panel.Top:=AButton.Top Panel.Width:=AButton.Width Panel.Height:=AButton.Height Panel.Tag:=AButtonIndex Panel.Parent:=AButton.Parent ButtonPanel[AButtonIndex]:=Panel Image:=TBitmapImage.Create(WizardForm) Image.Width:=160 Image.Height:=88 Image.Enabled:=False Image.Bitmap.LoadFromFile(ExpandConstant('{tmp}\button.bmp')) Image.Parent:=Panel ButtonImage[AButtonIndex]:=Image with TLabel.Create(WizardForm) do begin Tag:=AButtonIndex Parent:=Panel Width:=Panel.Width Height:=Panel.Height Transparent:=True OnClick:=@ButtonLabelClick OnDblClick:=@ButtonLabelClick OnMouseDown:=@ButtonLabelMouseDown OnMouseUp:=@ButtonLabelMouseUp end Labl:=TLabel.Create(WizardForm) Labl.Left:=0 Labl.Top:=3 Labl.Height:=17 Labl.Width:=Panel.Width Labl.Autosize:=false Labl.Alignment:=taCenter Labl.Tag:=AButtonIndex Labl.Transparent:=True Labl.Font.Color:=clWhite Labl.Font.Height:=17; Labl.Font.Name:='Trebuchet MS'; Labl.Caption:=AButton.Caption Labl.OnClick:=@ButtonLabelClick Labl.OnDblClick:=@ButtonLabelClick Labl.OnMouseDown:=@ButtonLabelMouseDown Labl.OnMouseUp:=@ButtonLabelMouseUp Labl.Parent:=Panel ButtonLabel[AButtonIndex]:=Labl end; procedure UpdateButton(AButton: TButton;AButtonIndex: integer); begin ButtonLabel[AButtonIndex].Caption:=AButton.Caption ButtonPanel[AButtonIndex].Visible:=AButton.Visible ButtonLabel[AButtonIndex].Enabled:=Abutton.Enabled end; procedure LicenceAcceptedRadioOnClick(Sender: TObject); begin ButtonLabel[bidNext].Enabled:=True end; procedure LicenceNotAcceptedRadioOnClick(Sender: TObject); begin ButtonLabel[bidNext].Enabled:=False end; procedure CurPageChanged4(CurPageID: Integer); begin UpdateButton(WizardForm.BackButton,bidBack) UpdateButton(WizardForm.NextButton,bidNext) UpdateButton(WizardForm.CancelButton,bidCancel) ButtonLabel[bidBack].Left := (ButtonPanel[bidBack].Width / 2 - ButtonLabel[bidBack].Width / 2); ButtonLabel[bidNext].Left := (ButtonPanel[bidNext].Width / 2 - ButtonLabel[bidNext].Width / 2); ButtonLabel[bidCancel].Left := (ButtonPanel[bidCancel].Width / 2 - ButtonLabel[bidCancel].Width / 2); ButtonLabel[bidDirBrowse].Left := (ButtonPanel[bidDirBrowse].Width / 2 - ButtonLabel[bidDirBrowse].Width / 2); ButtonLabel[bidGroupBrowse].Left := (ButtonPanel[bidGroupBrowse].Width / 2 - ButtonLabel[bidGroupBrowse].Width / 2); end; procedure InitializeWizard8(); begin WizardForm.BackButton.Width:=ButtonWidth WizardForm.BackButton.Height:=ButtonHeight WizardForm.NextButton.Width:=ButtonWidth WizardForm.NextButton.Height:=ButtonHeight WizardForm.CancelButton.Width:=ButtonWidth WizardForm.CancelButton.Height:=ButtonHeight WizardForm.DirBrowseButton.Width:=ButtonWidth WizardForm.DirBrowseButton.Height:=ButtonHeight WizardForm.GroupBrowseButton.Width:=ButtonWidth WizardForm.GroupBrowseButton.Height:=ButtonHeight WizardForm.LicenseAcceptedRadio.OnClick:=@LicenceAcceptedRadioOnClick WizardForm.LicenseNotAcceptedRadio.OnClick:=@LicenceNotAcceptedRadioOnClick ExtractTemporaryFile('button.bmp') LoadButtonImage(WizardForm.BackButton,bidBack) LoadButtonImage(WizardForm.NextButton,bidNext) LoadButtonImage(WizardForm.CancelButton,bidCancel) LoadButtonImage(WizardForm.DirBrowseButton,bidDirBrowse) LoadButtonImage(WizardForm.GroupBrowseButton,bidGroupBrowse) end; //******************************************* [Конец - Текстурирования кнопок] ***************************************************// //******************************************* [Начало - isdone] ***************************************************// const PCFonFLY=true; notPCFonFLY=false; var LabelPct1,LabelCurrFileName,LabelTime1,LabelTime2,LabelTime3: TLabel; ISDoneProgressBar1: TNewProgressBar; #ifdef SecondProgressBar LabelPct2: TLabel; ISDoneProgressBar2:TNewProgressBar; #endif ISDoneCancel:integer; ISDoneError:boolean; PCFVer:double; type TCallback = function (OveralPct,CurrentPct: integer;CurrentFile,TimeStr1,TimeStr2,TimeStr3:PAnsiChar): longword; function WrapCallback(callback:TCallback; paramcount:integer):longword;external 'wrapcallback@files:ISDone.dll stdcall delayload'; function ISArcExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutPath, ExtractedPath: AnsiString; DeleteInFile:boolean; Password, CfgFile, WorkPath: AnsiString; ExtractPCF: boolean ):boolean; external 'ISArcExtract@files:ISDone.dll stdcall delayload'; function IS7ZipExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutPath: AnsiString; DeleteInFile:boolean; Password: AnsiString):boolean; external 'IS7zipExtract@files:ISDone.dll stdcall delayload'; function ISRarExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutPath: AnsiString; DeleteInFile:boolean; Password: AnsiString):boolean; external 'ISRarExtract@files:ISDone.dll stdcall delayload'; function ISPrecompExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutFile: AnsiString; DeleteInFile:boolean):boolean; external 'ISPrecompExtract@files:ISDone.dll stdcall delayload'; function ISSRepExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutFile: AnsiString; DeleteInFile:boolean):boolean; external 'ISSrepExtract@files:ISDone.dll stdcall delayload'; function ISxDeltaExtract(CurComponent:Cardinal; PctOfTotal:double; minRAM,maxRAM:integer; InName, DiffFile, OutFile: AnsiString; DeleteInFile, DeleteDiffFile:boolean):boolean; external 'ISxDeltaExtract@files:ISDone.dll stdcall delayload'; function ISPackZIP(CurComponent:Cardinal; PctOfTotal:double; InName, OutFile: AnsiString;ComprLvl:integer; DeleteInFile:boolean):boolean; external 'ISPackZIP@files:ISDone.dll stdcall delayload'; function ShowChangeDiskWindow(Text, DefaultPath, SearchFile:AnsiString):boolean; external 'ShowChangeDiskWindow@files:ISDone.dll stdcall delayload'; function Exec2 (FileName, Param: PAnsiChar;Show:boolean):boolean; external 'Exec2@files:ISDone.dll stdcall delayload'; function ISFindFiles(CurComponent:Cardinal; FileMask:AnsiString; var ColFiles:integer):integer; external 'ISFindFiles@files:ISDone.dll stdcall delayload'; function ISPickFilename(FindHandle:integer; OutPath:AnsiString; var CurIndex:integer; DeleteInFile:boolean):boolean; external 'ISPickFilename@files:ISDone.dll stdcall delayload'; function ISGetName(TypeStr:integer):PAnsichar; external 'ISGetName@files:ISDone.dll stdcall delayload'; function ISFindFree(FindHandle:integer):boolean; external 'ISFindFree@files:ISDone.dll stdcall delayload'; function ISExec(CurComponent:Cardinal; PctOfTotal,SpecifiedProcessTime:double; ExeName,Parameters,TargetDir,OutputStr:AnsiString;Show:boolean):boolean; external 'ISExec@files:ISDone.dll stdcall delayload'; function SrepInit(TmpPath:PAnsiChar;VirtMem,MaxSave:Cardinal):boolean; external 'SrepInit@files:ISDone.dll stdcall delayload'; function PrecompInit(TmpPath:PAnsiChar;VirtMem:cardinal;PrecompVers:single):boolean; external 'PrecompInit@files:ISDone.dll stdcall delayload'; function FileSearchInit(RecursiveSubDir:boolean):boolean; external 'FileSearchInit@files:ISDone.dll stdcall delayload'; function ISDoneInit(RecordFileName:AnsiString; TimeType,Comp1,Comp2,Comp3:Cardinal; WinHandle, NeededMem:longint; callback:TCallback):boolean; external 'ISDoneInit@files:ISDone.dll stdcall'; function ISDoneStop:boolean; external 'ISDoneStop@files:ISDone.dll stdcall'; function ChangeLanguage(Language:AnsiString):boolean; external 'ChangeLanguage@files:ISDone.dll stdcall delayload'; function SuspendProc:boolean; external 'SuspendProc@files:ISDone.dll stdcall'; function ResumeProc:boolean; external 'ResumeProc@files:ISDone.dll stdcall'; function ProgressCallback(OveralPct,CurrentPct: integer;CurrentFile,TimeStr1,TimeStr2,TimeStr3:PAnsiChar): longword; begin if OveralPct<=1000 then ISDoneProgressBar1.Position := OveralPct; LabelPct1.Caption := IntToStr(OveralPct div 10)+'.'+chr(48 + OveralPct mod 10)+'%'; #ifdef SecondProgressBar if CurrentPct<=1000 then ISDoneProgressBar2.Position := CurrentPct; LabelPct2.Caption := IntToStr(CurrentPct div 10)+'.'+chr(48 + CurrentPct mod 10)+'%'; #endif LabelCurrFileName.Caption:=ExpandConstant('{cm:ExtractedFile} ')+MinimizePathName(CurrentFile, LabelCurrFileName.Font, LabelCurrFileName.Width-100); LabelTime1.Caption:=ExpandConstant('{cm:ElapsedTime} ')+TimeStr2; LabelTime2.Caption:=ExpandConstant('{cm:RemainingTime} ')+TimeStr1; LabelTime3.Caption:=ExpandConstant('{cm:AllElapsedTime}')+TimeStr3; Result := ISDoneCancel; end; procedure CancelButtonOnClick(Sender: TObject); begin SuspendProc; if MsgBox(SetupMessage(msgExitSetupMessage), mbConfirmation, MB_YESNO) = IDYES then ISDoneCancel:=1; ResumeProc; end; procedure BeforeInstall; begin With Tlabel.Create(WizardForm) do begin Parent:=WizardForm.InstallingPage; Caption:= ExpandConstant('{cm:installing'); AutoSize := true; Left := 10; Top := 213; Font.Name:='Trebuchet MS'; Font.Height:=17; Transparent:= true; end; end; procedure HideControls; begin WizardForm.FileNamelabel.Hide; ISDoneProgressBar1.Hide; LabelPct1.Hide; //LabelCurrFileName.Hide; LabelTime1.Hide; LabelTime2.Hide; #ifdef SecondProgressBar ISDoneProgressBar2.Hide; LabelPct2.Hide; #endif end; procedure CreateControls; var PBTop:integer; begin PBTop:=50; ISDoneProgressBar1 := TNewProgressBar.Create(WizardForm); with ISDoneProgressBar1 do begin Parent := WizardForm.InstallingPage; Height := 15; Left := 10; Top := 193; Width := 443; Max := 1000; end; LabelPct1 := TLabel.Create(WizardForm); with LabelPct1 do begin Parent := WizardForm.InstallingPage; AutoSize := False; Left := ISDoneProgressBar1.Width+15; Top := ISDoneProgressBar1.Top + -2; Width := 80; Font.Name:='Trebuchet MS'; Font.Height:=18; Transparent:= true; end; LabelCurrFileName := TLabel.Create(WizardForm); with LabelCurrFileName do begin Parent := WizardForm.InstallingPage; AutoSize := False; Width := ISDoneProgressBar1.Width+30; Left := 10; Top := 170; Font.Name:='Trebuchet MS'; Font.Height:=17; Transparent:= true; end; #ifdef SecondProgressBar PBTop:=PBTop+25; ISDoneProgressBar2 := TNewProgressBar.Create(WizardForm); with ISDoneProgressBar2 do begin Parent := WizardForm.InstallingPage; Left := 0; Top := 230; Width := ISDoneProgressBar1.Width; Max := 1000; Height := WizardForm.ProgressGauge.Height; end; LabelPct2 := TLabel.Create(WizardForm); with LabelPct2 do begin Parent := WizardForm.InstallingPage; AutoSize := False; Left := ISDoneProgressBar2.Width+5; Top := ISDoneProgressBar2.Top + 2; Width := 80; Transparent:= true; Font.Name:='Trebuchet MS'; end; #endif LabelTime1 := TLabel.Create(WizardForm); with LabelTime1 do begin Parent := WizardForm.InstallingPage; AutoSize := False; Width := ISDoneProgressBar1.Width div 2; Left := 10; Top := 215; Transparent:= true; Font.Name:='Trebuchet MS'; Font.Height:=17; end; LabelTime2 := TLabel.Create(WizardForm); with LabelTime2 do begin Parent := WizardForm.InstallingPage; AutoSize := False; Width := LabelTime1.Width+40; Left := ISDoneProgressBar1.Width div 2; Top := LabelTime1.Top; Transparent:= true; Font.Name:='Trebuchet MS'; Font.Height:=17; end; LabelTime3 := TLabel.Create(WizardForm); with LabelTime3 do begin Parent := WizardForm.FinishedPage; AutoSize := False; Width := 300; Left := 190; Top := 180; Alignment := taRightJustify; Transparent:= true; Font.Name:='Trebuchet MS'; Font.Height:=17; end; end; //******************************************* [Конец - isdone] ***************************************************// procedure DeinitializeSetup2; begin StaticSetDefault; end; procedure InitializeWizard(); begin InitializeWizard1(); InitializeWizard2(); InitializeWizard3(); InitializeWizard4(); InitializeWizard5(); InitializeWizard6(); InitializeWizard7(); InitializeWizard8(); IsInit:=True;// в самом конце InitializeWizard end; function InitializeSetup(): Boolean; begin RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#MyAppName}_Seraph1_is1', 'UninstallString', ResultStr) if ResultStr='' then begin IsInit:=False; Result := True; end else ResultStr:=RemoveQuotes(ResultStr); Exec(ResultStr, '', '', SW_SHOWNORMAL, ewNoWait, ResultCode) end; procedure CurPageChanged(CurPageID: Integer); begin // if CurPageID = wpSelectDir then begin WizardForm.NextButton.Enabled:= False; end; //Для примера, потом удалите //WizardLabel.Parent:= PageFromID(CurPageID).Surface; UpdateButton(WizardForm.BackButton,bidBack) UpdateButton(WizardForm.NextButton,bidNext) UpdateButton(WizardForm.CancelButton,bidCancel) UpdateButton(WizardForm.DirBrowseButton,bidDirBrowse) UpdateButton(WizardForm.GroupBrowseButton,bidGroupBrowse) if CurPageID = wpSelectDir then begin GetFreeSpaceCaption(nil); end; if CurPageID = wpSelectProgramGroup then begin ButtonLabel[bidNext].Caption:=ExpandConstant ('{cm:Install}'); ButtonLabel[bidNext].Left:= (ButtonPanel[bidNext].Width/2) - (ButtonLabel[bidNext].Width/2); end; if (CurPageID = wpFinished) and ISDoneError then begin LabelTime3.Hide; Wlabel1.Hide; WizardForm.Caption:= ExpandConstant('{cm:Error}'); WizardForm.FinishedHeadingLabel.Font.Color:= clWhite; WizardForm.FinishedHeadingLabel.Caption:= ExpandConstant('{cm:Error1}'); end; end; function CheckError:boolean; begin result:= not ISDoneError; end; function ShouldSkipPage(PageID: Integer): Boolean; begin if (PageID =wpReady)then Result:= True; end; type TSHFileOpStruct = record Wnd: HWND; wFunc: UINT; pFrom: PChar; pTo: PChar; fFlags: Word; // FILEOP_FLAGS; fAnyOperationsAborted: BOOL; hNameMappings: HWND; // Pointer; lpszProgressTitle: PChar; { only used if FOF_SIMPLEPROGRESS } end; const // use in wFunc { $EXTERNALSYM FO_MOVE } FO_MOVE = $0001; { $EXTERNALSYM FO_COPY } FO_COPY = $0002; { $EXTERNALSYM FO_DELETE } FO_DELETE = $0003; { $EXTERNALSYM FO_RENAME } FO_RENAME = $0004; // use in fFlags { $EXTERNALSYM FOF_MULTIDESTFILES } FOF_MULTIDESTFILES = $0001; { $EXTERNALSYM FOF_CONFIRMMOUSE } FOF_CONFIRMMOUSE = $0002; { $EXTERNALSYM FOF_SILENT } FOF_SILENT = $0004; { don't create progress/report } { $EXTERNALSYM FOF_RENAMEONCOLLISION } FOF_RENAMEONCOLLISION = $0008; { $EXTERNALSYM FOF_NOCONFIRMATION } FOF_NOCONFIRMATION = $0010; { Don't prompt the user. } { $EXTERNALSYM FOF_WANTMAPPINGHANDLE } FOF_WANTMAPPINGHANDLE = $0020; { Fill in SHFILEOPSTRUCT.hNameMappings Must be freed using SHFreeNameMappings } { $EXTERNALSYM FOF_ALLOWUNDO } FOF_ALLOWUNDO = $0040; { $EXTERNALSYM FOF_FILESONLY } FOF_FILESONLY = $0080; { on *.*, do only files } { $EXTERNALSYM FOF_SIMPLEPROGRESS } FOF_SIMPLEPROGRESS = $0100; { means don't show names of files } { $EXTERNALSYM FOF_NOCONFIRMMKDIR } FOF_NOCONFIRMMKDIR = $0200; { don't confirm making any needed dirs } { $EXTERNALSYM FOF_NOERRORUI } FOF_NOERRORUI = $0400; { don't put up error UI } procedure CurStepChanged(CurStep: TSetupStep); var Comps1,Comps2,Comps3, TmpValue:cardinal; FindHandle1,ColFiles1,CurIndex1,tmp:integer; ExecError:boolean; InFilePath,OutFilePath,OutFileName:PAnsiChar; begin if CurStep = ssInstall then begin //Если необходимо, можно поменять на ssPostInstall TextTimer:= SetTimer(0, 0, 10, WrapTimerProc(@TextProc, 4)); WizardForm.ProgressGauge.Hide; CreateControls; WizardForm.CancelButton.OnClick:=@CancelButtonOnClick; WizardForm.StatusLabel.Caption:=ExpandConstant('{cm:Extracted}'); ISDoneCancel:=0; // Распаковка всех необходимых файлов в папку {tmp}. ExtractTemporaryFile('unarc.dll'); #ifdef PrecompInside ExtractTemporaryFile('CLS-precomp.dll'); ExtractTemporaryFile('packjpg_dll.dll'); ExtractTemporaryFile('packjpg_dll1.dll'); ExtractTemporaryFile('precomp.exe'); ExtractTemporaryFile('zlib1.dll'); #endif #ifdef SrepInside ExtractTemporaryFile('CLS-srep.dll'); #endif #ifdef MSCInside ExtractTemporaryFile('CLS-MSC.dll'); #endif #ifdef facompress ExtractTemporaryFile('facompress.dll'); //ускоряет распаковку .arc архивов. #endif #ifdef records ExtractTemporaryFile('records.inf'); #endif #ifdef precomp #if precomp == "0.38" ExtractTemporaryFile('precomp038.exe'); #else #if precomp == "0.4" ExtractTemporaryFile('precomp040.exe'); #else #if precomp == "0.41" ExtractTemporaryFile('precomp041.exe'); #else #if precomp == "0.42" ExtractTemporaryFile('precomp042.exe'); #else ExtractTemporaryFile('precomp038.exe'); ExtractTemporaryFile('precomp040.exe'); ExtractTemporaryFile('precomp041.exe'); ExtractTemporaryFile('precomp042.exe'); #endif #endif #endif #endif #endif #ifdef unrar ExtractTemporaryFile('Unrar.dll'); #endif #ifdef XDelta ExtractTemporaryFile('XDelta3.dll'); #endif #ifdef PackZIP ExtractTemporaryFile('7z.dll'); ExtractTemporaryFile('PackZIP.exe'); #endif ExtractTemporaryFile('English.ini'); ExtractTemporaryFile('Russian.ini'); // Подготавливаем переменную, содержащую всю информацию о выделенных компонентах для ISDone.dll // максимум 96 компонентов. Comps1:=0; Comps2:=0; Comps3:=0; #ifdef Components TmpValue:=1; if IsComponentSelected('text\rus') and IsComponentSelected('voice\rus') then Comps1:=Comps1+TmpValue; //компонент 1 TmpValue:=TmpValue*2; if IsComponentSelected('text\eng') and IsComponentSelected('voice\eng') then Comps1:=Comps1+TmpValue; //компонент 2 TmpValue:=TmpValue*2; if IsComponentSelected('text\rus') and IsComponentSelected('voice\eng') then Comps1:=Comps1+TmpValue; //компонент 3 TmpValue:=TmpValue*2; if IsComponentSelected('text\eng') and IsComponentSelected('voice\rus') then Comps1:=Comps1+TmpValue; //компонент 4 TmpValue:=TmpValue*2; if IsComponentSelected('text\rus') then Comps1:=Comps1+TmpValue; //компонент 5 TmpValue:=TmpValue*2; if IsComponentSelected('text\eng') then Comps1:=Comps1+TmpValue; //компонент 6 TmpValue:=TmpValue*2; if IsComponentSelected('text\ger') then Comps1:=Comps1+TmpValue; //компонент 7 TmpValue:=TmpValue*2; if IsComponentSelected('text\ger') then Comps1:=Comps1+TmpValue; //компонент 8 TmpValue:=TmpValue*2; if IsComponentSelected('text\fre') then Comps1:=Comps1+TmpValue; //компонент 9 TmpValue:=TmpValue*2; if IsComponentSelected('text\ita') then Comps1:=Comps1+TmpValue; //компонент 10 TmpValue:=TmpValue*2; if IsComponentSelected('text\pol') then Comps1:=Comps1+TmpValue; //компонент 11 TmpValue:=TmpValue*2; if IsComponentSelected('text\por') then Comps1:=Comps1+TmpValue; //компонент 12 TmpValue:=TmpValue*2; if IsComponentSelected('text\spa') then Comps1:=Comps1+TmpValue; //компонент 13 TmpValue:=TmpValue*2; if IsComponentSelected('crack\rl') then Comps1:=Comps1+TmpValue; //компонент 14 TmpValue:=TmpValue*2; if IsComponentSelected('crack\te') then Comps1:=Comps1+TmpValue; //компонент 15 // ..... // см. справку #endif #ifdef precomp PCFVer:={#precomp}; #else PCFVer:=0; #endif ISDoneError:=true; if ISDoneInit(ExpandConstant('{src}\records.inf'), $F777, Comps1,Comps2,Comps3, MainForm.Handle, {#NeedMem}, @ProgressCallback) then begin repeat case ActiveLanguage of 'eng': ChangeLanguage('English'); 'rus': ChangeLanguage('Russian'); end; if not SrepInit(ExpandConstant('{app}'),128,0) then break; if not PrecompInit(ExpandConstant('{app}'),128,PCFVer) then break; if not FileSearchInit(true) then break; // if not ISArcExtract ( 0, 0, ExpandConstant('{src}\data4.bin'), ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break; // далее находятся закомментированые примеры различных функций распаковки (чтобы каждый раз не лазить в справку за примерами) (* if not ISArcExtract ( 0, 0, ExpandConstant('{src}\arc.arc'), ExpandConstant('{app}\'), '', false, '', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\'), notPCFonFLY{PCFonFLY}) then break; if not IS7ZipExtract ( 0, 0, ExpandConstant('{src}\CODMW2.7z'), ExpandConstant('{app}\data1'), false, '') then break; if not ISRarExtract ( 0, 0, ExpandConstant('{src}\data_*.rar'), ExpandConstant('{app}'), false, '') then break; if not ISSRepExtract ( 0, 0, ExpandConstant('{app}\data1024_1024.srep'),ExpandConstant('{app}\data1024.arc'), true) then break; if not ISPrecompExtract( 0, 0, ExpandConstant('{app}\data.pcf'), ExpandConstant('{app}\data.7z'), true) then break; if not ISxDeltaExtract ( 0, 0, 0, 640, ExpandConstant('{app}\in.pcf'), ExpandConstant('{app}\*.diff'), ExpandConstant('{app}\out.dat'), false, false) then break; if not ISPackZIP ( 0, 0, ExpandConstant('{app}\1a1\*'), ExpandConstant('{app}\1a1.pak'), 2, false ) then break; if not ISExec ( 0, 0, 0, ExpandConstant('{tmp}\Arc.exe'), ExpandConstant('x -o+ "{src}\001.arc" "{app}\"'), ExpandConstant('{tmp}'), '...',false) then break; if not ShowChangeDiskWindow ('Пожалуйста, вставьте второй диск и дождитесь его инициализации.', ExpandConstant('{src}'),'CODMW_2.arc') then break; // распаковка группы файлов посредством внешнего приложения FindHandle1:=ISFindFiles(0,ExpandConstant('{app}\*.ogg'),ColFiles1); ExecError:=false; while not ExecError and ISPickFilename(FindHandle1,ExpandConstant('{app}\'),CurIndex1,true) do begin InFilePath:=ISGetName(0); OutFilePath:=ISGetName(1); OutFileName:=ISGetName(2); ExecError:=not ISExec(0, 0, 0, ExpandConstant('{tmp}\oggdec.exe'), '"'+InFilePath+'" -w "'+OutFilePath+'"',ExpandConstant('{tmp}'),OutFileName,false); end; ISFindFree(FindHandle1); if ExecError then break; *) ISDoneError:=false; until true; ISDoneStop; end; HideControls; LabelCurrFileName.Caption:= ExpandConstant('{cm:Error2}'); WizardForm.CancelButton.Visible:=true; WizardForm.CancelButton.Enabled:=false; end; if (CurStep=ssPostInstall) and ISDoneError then begin Exec2(ExpandConstant('{uninstallexe}'), '/VERYSILENT', false); end; end; procedure DeinitializeSetup(); begin DeinitializeSetup1(); DeinitializeSetup2(); If IsInit then begin BGImageStream.Free; BTNImageStream.Free; end; end; | Всего записей: 69 | Зарегистр. 20-04-2010 | Отправлено: 11:11 30-10-2013 | Исправлено: tuz1979, 20:13 30-10-2013 |
|