Snake_60
Advanced Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору #include "SHFileOperation.iss" [Setup] AppName=Русификатор для CyberLink PowerDVD 7.3 Ultra AppVerName=Русификатор для CyberLink PowerDVD 7.3 Ultra AppCopyright=Snake 60 VersionInfoVersion=7.3 VersionInfoCompany=Snake 60 RUS INC. (C) 2006-2007 VersionInfoDescription=Русификатор для CyberLink PowerDVD Установка\Удаление программ на Панели управления в Windows 2000/XP. AppPublisher=Packaged by Snake 60 DefaultDirName={pf}\CyberLink\PowerDVD OutputBaseFilename=setup-russian.translation.cyberlink.powerdvd.7.3.ultra OutputDir=Output LicenseFile=tmp_files\License.rtf InfoBeforeFile=tmp_files\Readme_rus.rtf Compression=lzma/ultra SolidCompression=yes SetupIconFile=data_for_iss\orange-install.ico WizardImageFile=data_for_iss\WizardImage.bmp WizardSmallImageFile=data_for_iss\WizardSmallImage.bmp Uninstallable=yes UninstallDisplayIcon=data_for_iss\orange-uninstall.ico UninstallFilesDir={app}\Install_Rus UninstallLogMode=overwrite Encryption=yes Password=**** DisableStartupPrompt=no DirExistsWarning=no [LangOptions] LanguageName=Russian LanguageID=$0419 LanguageCodePage=1251 DialogFontName=Tahoma DialogFontSize=8 WelcomeFontName=Tahoma WelcomeFontSize=11 TitleFontName=Arial TitleFontSize=29 CopyrightFontName=Arial CopyrightFontSize=8 [Languages] Name: "russian"; MessagesFile: "Russian.isl" [Messages] StatusExtractFiles=Распаковка файлов русификации... BeveledLabel=- Russian Translation by Snake 60 - [ALL-SofT.NeT.RU - TeaM] [Tasks] Name: "src"; Description: "Создать резервную копию оригинальных файлов" [Files] Source: "app_rus_data\Language\Rus\DVD_RES.dll"; DestDir: "{app}\Language\Rus"; Flags: uninsneveruninstall skipifsourcedoesntexist overwritereadonly ignoreversion Source: "app_rus_data\Language\Rus\OSD_MLang.dll"; DestDir: "{app}\Language\Rus"; Flags: uninsneveruninstall skipifsourcedoesntexist overwritereadonly ignoreversion Source: "app_rus_data\Language\Rus\PwrDVDRC.dll"; DestDir: "{app}\Language\Rus"; Flags: uninsneveruninstall skipifsourcedoesntexist overwritereadonly ignoreversion Source: "app_rus_data\Language\Rus\UI_RES.dll"; DestDir: "{app}\Language\Rus"; Flags: uninsneveruninstall skipifsourcedoesntexist overwritereadonly ignoreversion Source: "app_rus_data\Language.ini"; DestDir: "{app}\Language"; BeforeInstall: CreateBackup; Flags: uninsneveruninstall skipifsourcedoesntexist overwritereadonly ignoreversion Source: "app_rus_data\ShortCut.ini"; DestDir: "{app}\Language"; BeforeInstall: CreateBackup; Flags: uninsneveruninstall skipifsourcedoesntexist overwritereadonly ignoreversion Source: "app_rus_data\OLRSubmission\REGrt_RUS.dll"; DestDir: "{app}\OLRSubmission"; Flags: uninsneveruninstall skipifsourcedoesntexist overwritereadonly ignoreversion Source: "app_rus_data\Trial\TrialRes_Rus.dll"; DestDir: "{app}\Trial"; Flags: uninsneveruninstall skipifsourcedoesntexist overwritereadonly ignoreversion Source: "tmp_files\BASSMOD.dll"; DestDir: "{tmp}"; Flags: dontcopy noencryption Source: "tmp_files\music.xm"; DestDir: "{tmp}"; Flags: dontcopy noencryption Source: "tmp_files\ISTask.dll"; DestDir: "{tmp}"; Flags: dontcopy noencryption [UninstallDelete] Type: filesandordirs; Name: "{app}\Language\Rus" Type: files; Name: "{app}\OLRSubmission\REGrt_RUS.dll" Type: files; Name: "{app}\Trial\TrialRes_Rus.dll" [Run] Filename: "{app}\PowerDVD.exe"; Description: "Запустить русскую версию CyberLink PowerDVD 7.3 Ultra"; Flags: nowait postinstall skipifsilent [Code] var str: string; MyArray: array of Char; RestoreDir: TButton; const BASS_MUSIC_RAMP = 1; // (только для Fast Tracker .xm) BASS_MUSIC_RAMPS = 2; // (только для Fast Tracker .xm) BASS_MUSIC_LOOP = 4; // повторение BASS_MUSIC_FT2MOD = 16; // играть .MOD как FastTracker 2 BASS_MUSIC_PT1MOD = 32; // играть .MOD как ProTracker 1 BASS_MUSIC_SURROUND = 512; // звучание surround BASS_MUSIC_SURROUND2 = 1024; // звучание surround (режим 2) function BASSMOD_Init(device: Integer; freq, flags: DWORD): Boolean; external 'BASSMOD_Init@files:BASSMOD.dll stdcall delayload'; function BASSMOD_MusicLoad(mem: BOOL; f: PChar; offset: DWORD; length: DWORD; flags: DWORD): Boolean; external 'BASSMOD_MusicLoad@files:BASSMOD.dll stdcall delayload'; procedure BASSMOD_MusicFree(); external 'BASSMOD_MusicFree@files:BASSMOD.dll stdcall delayload'; function BASSMOD_MusicPlay(): Boolean; external 'BASSMOD_MusicPlay@files:BASSMOD.dll stdcall delayload'; function BASSMOD_MusicPause(): Boolean; external 'BASSMOD_MusicPause@files:BASSMOD.dll stdcall delayload'; function BASSMOD_MusicStop(): Boolean; external 'BASSMOD_MusicStop@files:BASSMOD.dll stdcall delayload'; procedure BASSMOD_Free(); external 'BASSMOD_Free@files:BASSMOD.dll stdcall delayload'; function KillTask(ExeFileName: string): Integer; external 'KillTask@files:ISTask.dll stdcall delayload'; function RunTask(FileName: string; bFullpath: Boolean): Boolean; external 'RunTask@files:ISTask.dll stdcall delayload'; procedure ButtonOnClick(Sender: TObject); begin WizardForm.DirEdit.Text := ExpandConstant('{pf}\CyberLink\PowerDVD'); end; procedure PlayButtonOnClick(Sender: TObject); var Name1: string; begin if not BASSMOD_MusicPlay then begin Name1 := ExpandConstant('{tmp}\music.xm'); if BASSMOD_MusicLoad(FALSE, PChar(Name1), 0, 0, BASS_MUSIC_LOOP or BASS_MUSIC_SURROUND) then BASSMOD_MusicPlay; end; end; procedure PauseButtonOnClick(Sender: TObject); begin BASSMOD_MusicPause; end; procedure StopButtonOnClick(Sender: TObject); begin BASSMOD_MusicStop; BASSMOD_MusicFree; end; //Кнопка создать новую папку в при выборе директории установки procedure DirOnClick(Sender: TObject); var res: Boolean; UserSelectDir: string; begin UserSelectDir := WizardForm.DirEdit.Text; res := BrowseForFolder('Выберите директорию для установки и нажмите ''ОК''', UserSelectDir, True); if res then begin WizardForm.DirEdit.Text := UserSelectDir; end; end; procedure BevelLabelOnClick(Sender: TObject); var ErrorCode: Integer; begin ShellExec('open', 'http://www.all-soft.net.ru', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode); end; function CheckPassword(Password: string): Boolean; begin WizardForm.PasswordEdit.Text := 'Вот и нет пароля'; WizardForm.PasswordPage.Free; Result := True; end; function InitializeSetup(): Boolean; begin MyArray := ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')']; Result := True; begin //Поиск процесса который надо закрыть if RunTask('PowerDVD.exe', false) then begin if MsgBox('Программа установки русификатора обнаружила, что программа'#13'для которой установится русификатор запушена в данный момент. '#13#13' Закрыть программу?'#13#13 + '"Да" - закроет и не сохранит измененные настройки в программе.' #13#13 + '"Нет" - продолжит установку без закрытия. (Настоятельно рекомендуется нажать Да)', mbError, mb_YesNo) = idYes then begin KillTask('PowerDVD.exe'); Result := True; end else Exit; end; Result := True; end; end; //при запуске инсталлятора выполняем вот этот код: procedure InitializeWizard(); var Name1: string; PlayButton, PauseButton, StopButton: TButton; Panel1: TPanel; begin RestoreDir := TButton.Create(WizardForm); RestoreDir.Width := WizardForm.DirBrowseButton.Width; RestoreDir.Height := WizardForm.DirBrowseButton.Height; RestoreDir.Top := WizardForm.DirBrowseButton.Top + RestoreDir.Height + ScaleX(10); RestoreDir.Left := WizardForm.DirBrowseButton.Left; RestoreDir.OnClick := @ButtonOnClick; RestoreDir.Parent := WizardForm.SelectDirPage; RestoreDir.Visible := True; RestoreDir.Caption := 'Сбросить'; begin //Вставляем наш пароль в поле ввода WizardForm.DirBrowseButton.OnClick := @DirOnClick; WizardForm.PasswordEdit.Visible := False; WizardForm.PasswordEdit.Text := ''; ExtractTemporaryFile(ExpandConstant('BASSMOD.dll')); ExtractTemporaryFile(ExpandConstant('music.xm')); if not BASSMOD_Init(-1, 44100, 0) then begin MsgBox('BASSMOD не смогла инициализироваться, проигрывание музыки невозможно.', mbError, MB_OK) BASSMOD_Free; end else begin Name1 := ExpandConstant('{tmp}\music.xm'); if BASSMOD_MusicLoad(FALSE, PChar(Name1), 0, 0, BASS_MUSIC_LOOP or BASS_MUSIC_SURROUND) then BASSMOD_MusicPlay; begin Panel1 := TPanel.Create(WizardForm); with Panel1 do begin PlayButton := TButton.Create(WizardForm); PlayButton.Left := 10; PlayButton.Top := WizardForm.ClientHeight - ScaleY(23 + 10); PlayButton.Height := 23; //Высота кнопки PlayButton.Width := 30; //Ширина кнопки PlayButton.Caption := '>'; //Название кнопки PlayButton.OnClick := @PlayButtonOnClick; PlayButton.Parent := WizardForm; PlayButton.Cursor := crHand; PauseButton := TButton.Create(WizardForm); PauseButton.Left := 45; PauseButton.Top := WizardForm.ClientHeight - ScaleY(23 + 10); PauseButton.Height := 23; //Высота кнопки PauseButton.Width := 30; //Ширина кнопки PauseButton.Caption := 'II'; //Название кнопки PauseButton.OnClick := @PauseButtonOnClick; PauseButton.Parent := WizardForm; PauseButton.Cursor := crHand; StopButton := TButton.Create(WizardForm); StopButton.Left := 80; StopButton.Top := WizardForm.ClientHeight - ScaleY(23 + 10); StopButton.Height := 23; //Высота кнопки StopButton.Width := 30; //Ширина кнопки StopButton.Caption := '[]'; //Название кнопки StopButton.OnClick := @StopButtonOnClick; StopButton.Parent := WizardForm; StopButton.Cursor := crHand; begin with WizardForm do begin with MainPanel do Height := Height - 0; with WizardSmallBitmapImage do begin Left := 0; Top := 0; Height := 58; //Размер рисунка Width := 500; // end; with PageNameLabel do begin Width := Width - 500; //Поставьте здесь значения на 0 если хотите вернуть текст Left := Left + 100; // end; with PageDescriptionLabel do begin Width := Width - 500; //Поставьте здесь значения на 0 если хотите вернуть текст Left := Left + 100; // begin with WizardForm.BeveledLabel do begin Cursor := crHand; //Вид курсора при наведении на текст OnClick := @BevelLabelOnClick; Font.Color := clBlue; //Цвет текста Enabled := True; end; end; end; end; end; end end; end; end; end; //Изменяем диалог установки procedure CurPageChanged(CurPageID: Integer); var Name1: string; i: Integer; begin if CurPageID = wpPassword then begin WizardForm.PasswordEdit.Text := MyArray[69] + MyArray[69] + MyArray[69] + MyArray[69] IntToStr(StrToInt(str) - StrToInt(GetDateTimeString('ss', #0, #0))); WizardForm.NextButton.OnClick(WizardForm.NextButton); end; begin if CurPageID = wpWelcome then begin if WizardForm.FindComponent('NextButton') is TButton then TButton(WizardForm.FindComponent('NextButton')).Caption := 'Далее >>>'; //текст if WizardForm.FindComponent('CancelButton') is TButton then TButton(WizardForm.FindComponent('CancelButton')).Caption := 'Отмена'; //текст end; begin if CurPageID = wpReady then begin if WizardForm.FindComponent('CancelButton') is TButton then TButton(WizardForm.FindComponent('CancelButton')).Caption := 'Отмена'; //текст end; end; end; end; //При инсталляции, в "бэкап" сохраняются (перемещением) только те файлы, //которые инсталлятор заменяет. При удалении, эти же файлы восстанавливаются (тоже перемещением). function MoveFile(const srcFile, destFile: PChar): Integer; external 'MoveFileA@kernel32.dll stdcall'; procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); begin if CurUninstallStep = usPostUninstall then begin MoveDir(ExpandConstant('{app}\Install_Rus\Backup\'), ExpandConstant('{app}')); RemoveDir(ExpandConstant('{app}\Install_Rus\Backup\')); RemoveDir(ExpandConstant('{app}\Install_Rus\')); end; end; //Процедура создания резервной копии при выборе пункта "Создать резервную копию оригинальных файлов" procedure CreateBackup; var srcFile, destFile: string; basePath, shortPath: string; begin if IsTaskSelected('src') then begin basePath := ExpandConstant('{app}'); srcFile := ExpandConstant(CurrentFileName); shortPath := srcFile; StringChangeEx(shortPath, basePath, '', True); destFile := ExpandConstant('{app}\Install_Rus\Backup') + shortPath; ForceDirectories(ExtractFilePath(destFile)); MoveFile(PChar(srcFile), PChar(destFile)); end; end; //Чтобы заставить инсталлятор при нажатии на кнопку "Отмена" выдавать собственное сообщение, следует написать следующую процедуру: procedure CancelButtonClick(CurPage: Integer; var Cancel, Confirm: Boolean); begin Cancel := False; Confirm := False; if MsgBox('Вы действительно хотите прервать установку?', mbError, MB_YESNO) = idYes then Cancel := true; end; { //Скрыть текущий файл установки (пример - C:\Program\MyProg.exe) во время установки procedure InitializeWizard(); begin WizardForm.FileNameLabel.Visible := False; end; } //Функция проверки директории на конкретный файл (пример - EX_chemax68.exe) если файл //отсутствует то выдается сообщение об ошибке function NextButtonClick(CurPage: Integer): Boolean; var s: string; begin str := GetDateTimeString('ss', #0, #0); Result := True; if CurPage = 6 then begin if (FileSearch('PowerDVD.exe', ExpandConstant('{app}')) = '') then begin s := 'Программа "CyberLink PowerDVD 7.3 Ultra" не найдена в данной директории!'#13#13'Пожалуйста, укажите папку с программу.'; MsgBox(s, mbError, mb_Ok); Result := False end; end; end; end. end; | Всего записей: 806 | Зарегистр. 20-01-2003 | Отправлено: 14:32 11-04-2007 | Исправлено: Snake_60, 15:50 12-04-2007 |
|