Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Inno Setup (создание инсталяционных пакетов)

Модерирует : gyra, Maz

Widok (23-04-2007 18:02): лимит страниц. продолжаем здесь  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

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
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Программы » Inno Setup (создание инсталяционных пакетов)
Widok (23-04-2007 18:02): лимит страниц. продолжаем здесь


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru