Войти
  1. ВКонтакте
  2. Facebook
  1. »
  2. »
  3. »
  4. Установщик русификатора на Inno Setup
Скрыть панель справаПоказать панель справа

Установщик русификатора на Inno Setup

Легенда
  1. Офлайн
  2. Админ
  3. 1652 сообщений
  4. Репутация: 2
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 1 отправлено 15:42, 06.05.2011
Небольшие хитрости для установки русификатора.

Задача:
1. Вывод заставки
2. Проиграть музыку или еще какие либо прибамбасы
3. Пропатчить основной файл – слишком большой для простой установки или замены

Почти все задачи выполняет PatchWise Free, но чтобы выполнить полностью поставленные задачи, не надо быть программистом или гуру в установщиках. Для этих целей возьмем Inno Setup и с помощью скрипта сделаем все как надо. Сразу надо сделать с помощью PatchWise Free укороченный патч. Делает патч и Inno Setup, но рабочих скриптов я так и не нашел в сети. Да и зачем огород городить, если есть PatchWise Free?

Создаем патч на екзешник и пишем инфу





Все данные Документации удаляем, это все будет в Inno Setup



Обязательно переключаем стиль программы на Simple



Если все правильно сделали, то при прогоне патча вид будет такой как ниже.



Я немного откорректировал инфу в PatchWise Free (языковые файлы).
Итак, установщик готов и весит…..79кб
Но время маленьких патчей ушло, сколько лет за Спасибо русики делал biggrin , и мы теперь увеличим размер установщика без всякого хлама, а естественным способом.
С помощью InnoSetup мы создадим установщик для запуска русика и прибамбасов. Скопируйте скрипт ниже и вставьте его в InnoSetup
Скачайте Доступно только для пользователейэтот архив для тестирования. Там нужные файлы и пустой скрипт.

Code
;InnoSetupVersion=5.3.3

[Setup]
AppName=VMware ThinApp
AppVerName=4.6.1-361923
AppVersion=VMware ThinApp
DefaultDirName={pf}\VMware\VMware ThinApp
DefaultGroupName=VMware ThinApp
OutputBaseFilename=VMware ThinApp_4.6.1-361923_RU
Compression=bzip
LicenseFile=embedded\License.rtf
WizardImageFile=embedded\WizardImage.bmp
WizardSmallImageFile=    embedded\WizardSmallImage.bmp
DisableDirPage=true
DisableProgramGroupPage=true
DisableReadyPage=true
DisableFinishedPage=true
Restar t If  NeededByRun=false
PrivilegesRequired=poweruser
SetupIconFile=embedded\128.ico

[Files]
Source: {app}\vmware.exe; DestDir: {tmp}; Attribs: hidden; Flags: deleteafterinstall
Source: embedded\logo.bmp; Flags: dontcopy
; начальная заставка:
Source: embedded\logo.wav; Flags: dontcopy
; музон
Source: embedded\WizModernImage-Is.bmp; Flags: dontcopy
; картинка слева:
Source: filters\InnoCallback.dll; DestDir: {tmp}; Flags: dontcopy
Source: filters\callnsis.dll; Flags: dontcopy
Source: filters\AdvSplash.dll; Flags: dontcopy
Source: filters\waterctrl.dll; Flags: dontcopy
; эффекты

[Run]
Filename: {tmp}\vmware.exe; Flags: waituntilidle

[CustomMessages]
Russian.NameAndVersion=%1, версия %2
Russian.AdditionalIcons=Дополнительные значки:
Russian.CreateDesktopIcon=Создать значок на Рабочем столе
Russian.CreateQuickLaunchIcon=Создать значок в Панели быстрого запуска
Russian.ProgramOnTheWeb=Сайт %1 в Интернете
Russian.UninstallProgram=Деинсталлировать %1
Russian.LaunchProgram=Запустить %1
Russian.AssocFileExtension=Связать %1 с файлами, имеющими расширение %2
Russian.AssocingFileExtension=Связывание %1 с файлами %2...

[Languages]
; These files are stubs
; To achieve better results after recompilation, use the real language files
Name: Russian; MessagesFile: compiler:Languages\Russian.isl

[Messages]
BeveledLabel=Все права  WYLEK (C) 2011

[Code]
procedure CurPageChanged1(CurPageID: Integer);
begin
If CurPageID=wpWelcome then
begin
SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0)
SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0)
end;
end;

function callplug(parentwnd: Integer; pluginname,funcname,param1,param2,param3,param4,param5,param6,param7,param8,param9,param10: PAnsiChar): Integer;
external 'callplug@files:callnsis.dll stdcall';

procedure InitializeWizard2();
var
       val: Integer;
begin
       ExtractTemporaryFile('AdvSplash.dll');
       ExtractTemporaryFile('logo.bmp');
       ExtractTemporaryFile('logo.wav');
       val:=callplug(0,ExpandConstant('{tmp}\AdvSplash.dll'),'show','2800','1400','1200','-1',ExpandConstant('{tmp}\logo'),'','','','','');
end;

procedure CurPageChanged(CurPageID: Integer);
begin
       CurPageChanged1(CurPageID);
end;

procedure InitializeWizard();
begin
       InitializeWizard2();
end;


Теперь сделайте компиляцию проекта и запускайте установщик. Все идет как по маслу – эффекты, лицензия и окно установщика. Пользователь даже не заметит, что работают два установщика. Этот метод применяется везде – это не домашняя заготовка. Когда-то при переводе Aimersoft DVD Studio Pack я обнаружил в контейнере шесть екзешников.



И тут возникает по ходу дела мысль – создать RuPack с заводским установщиком и своим русиком…

Для этой цели вставляем установщик vmware-thinapp-enterprise-4.6.1-361923.exe в папку {app} и дописываем строку в секцию [Files]

Source: {app}\vmware-thinapp-enterprise-4.6.1-361923.exe; DestDir: {tmp}; Attribs: hidden; Flags: deleteafterinstall

и дописываем строку в секцию [Run]

Filename: {tmp}\vmware-thinapp-enterprise-4.6.1-361923.exe; Flags: hidewizard

Запускаем компиляцию, и после запуск установщика. Берем бубен и танцуем вокруг компа…
Чтобы скрыть от глаз чайников путь временной установки файлов, дописываем код в самый низ секции

Code
procedure HideInstallPath();
begin
WizardForm.FileNameLabel.Visible := False;
end;
//*******//
procedure ShowInstallPath();
begin
WizardForm.FileNameLabel.Visible := True;
end;


И дописываем на свои файлы вызов этой процедуры. Вот полный скрипт. Скомпилируйте и на запуск! Путь файлов больше не виден при установке.

Code
;InnoSetupVersion=5.3.3

[Setup]
AppName=VMware ThinApp
AppVerName=4.6.1-361923
AppVersion=VMware ThinApp
DefaultDirName={pf}\VMware\VMware ThinApp
DefaultGroupName=VMware ThinApp
OutputBaseFilename=VMware ThinApp_4.6.1-361923_RU
Compression=bzip
LicenseFile=embedded\License.rtf
WizardImageFile=embedded\WizardImage.bmp
WizardSmallImageFile=    embedded\WizardSmallImage.bmp
DisableDirPage=true
DisableProgramGroupPage=true
DisableReadyPage=true
DisableFinishedPage=true
Restar t If  NeededByRun=false
PrivilegesRequired=poweruser
SetupIconFile=embedded\128.ico

[Files]
Source: {app}\vmware.exe; DestDir: {tmp}; Attribs: hidden; Flags: deleteafterinstall; BeforeInstall: HideInstallPath; AfterInstall: ShowInstallPath
Source: {app}\vmware-thinapp-enterprise-4.6.1-361923.exe; DestDir: {tmp}; Attribs: hidden; Flags: deleteafterinstall; BeforeInstall: HideInstallPath; AfterInstall: ShowInstallPath
Source: embedded\logo.bmp; Flags: dontcopy
; начальная заставка:
Source: embedded\logo.wav; Flags: dontcopy
; музон
Source: embedded\WizModernImage-Is.bmp; Flags: dontcopy
; картинка слева:
Source: filters\InnoCallback.dll; DestDir: {tmp}; Flags: dontcopy
Source: filters\callnsis.dll; Flags: dontcopy
Source: filters\AdvSplash.dll; Flags: dontcopy
Source: filters\waterctrl.dll; Flags: dontcopy
; эффекты

[Run]
Filename: {tmp}\vmware-thinapp-enterprise-4.6.1-361923.exe; Flags: hidewizard
Filename: {tmp}\vmware.exe; Flags: hidewizard

[CustomMessages]
Russian.NameAndVersion=%1, версия %2
Russian.AdditionalIcons=Дополнительные значки:
Russian.CreateDesktopIcon=Создать значок на Рабочем столе
Russian.CreateQuickLaunchIcon=Создать значок в Панели быстрого запуска
Russian.ProgramOnTheWeb=Сайт %1 в Интернете
Russian.UninstallProgram=Деинсталлировать %1
Russian.LaunchProgram=Запустить %1
Russian.AssocFileExtension=Связать %1 с файлами, имеющими расширение %2
Russian.AssocingFileExtension=Связывание %1 с файлами %2...

[Languages]
; These files are stubs
; To achieve better results after recompilation, use the real language files
Name: Russian; MessagesFile: compiler:Languages\Russian.isl

[Messages]
BeveledLabel=Все права  WYLEK (C) 2011

[Code]
procedure CurPageChanged1(CurPageID: Integer);
begin
If CurPageID=wpWelcome then
begin
SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0)
SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0)
end;
end;

function callplug(parentwnd: Integer; pluginname,funcname,param1,param2,param3,param4,param5,param6,param7,param8,param9,param10: PAnsiChar): Integer;
external 'callplug@files:callnsis.dll stdcall';

procedure InitializeWizard2();
var
       val: Integer;
begin
       ExtractTemporaryFile('AdvSplash.dll');
       ExtractTemporaryFile('logo.bmp');
       ExtractTemporaryFile('logo.wav');
       val:=callplug(0,ExpandConstant('{tmp}\AdvSplash.dll'),'show','2800','1400','1200','-1',ExpandConstant('{tmp}\logo'),'','','','','');
end;

procedure CurPageChanged(CurPageID: Integer);
begin
       CurPageChanged1(CurPageID);
end;

procedure InitializeWizard();
begin
       InitializeWizard2();
end;

procedure HideInstallPath();
begin
WizardForm.FileNameLabel.Visible := False;
end;
//*******//
procedure ShowInstallPath();
begin
WizardForm.FileNameLabel.Visible := True;
end;


Итак, конечный пользователь сам того не ведая, скачивает установщик и русификатор вместе и дает возможность русификаторщику заработать на нем 1 рубль. Но надо и пользователю дать возможность выбирать при установке или программу или русификатор. Что для этого надо? Правильно, бестолковка! Нужно создать задачу для этого. Пишем так…

Code
[Tasks]
Name: additional; Description: Выберите желаемое действие
Name: additional\PROG; Description: Установить VMware ThinApp_4.6.1-361923; Flags: unchecked
Name: additional\RUS; Description: Установить русификатор; Flags: unchecked
Name: additional\ADAM; Description: Посетить сайт русификации; Flags: unchecked

[Run]
Filename: {tmp}\vmware-thinapp-enterprise-4.6.1-361923.exe; Tasks: additional\PROG; Flags: hidewizard
Filename: {tmp}\vmware.exe; Tasks: additional\RUS; Flags: hidewizard
Filename: http://www.wylek.ru; Tasks: additional\ADAM; Flags: shellexec hidewizard


Третья строчка это переход на наш сайт. Пусть пользователь и это выбирает, не будем насильно открывать страницу после установки софта. Полный скрипт ниже.

Code
;InnoSetupVersion=5.3.3

[Setup]
AppName=VMware ThinApp
AppVerName=4.6.1-361923
AppVersion=VMware ThinApp
DefaultDirName={pf}\VMware\VMware ThinApp
DefaultGroupName=VMware ThinApp
OutputBaseFilename=VMware ThinApp_4.6.1-361923_RU
Compression=bzip
LicenseFile=embedded\License.rtf
WizardImageFile=embedded\WizardImage.bmp
WizardSmallImageFile=   embedded\WizardSmallImage.bmp
DisableDirPage=true
DisableProgramGroupPage=true
DisableReadyPage=true
DisableFinishedPage=true
Restart If  NeededByRun=false
PrivilegesRequired=poweruser
SetupIconFile=embedded\128.ico

[Files]
Source: {app}\vmware.exe; DestDir: {tmp}; Attribs: hidden; Flags: deleteafterinstall; BeforeInstall: HideInstallPath; AfterInstall: ShowInstallPath
Source: {app}\vmware-thinapp-enterprise-4.6.1-361923.exe; DestDir: {tmp}; Attribs: hidden; Flags: deleteafterinstall; BeforeInstall: HideInstallPath; AfterInstall: ShowInstallPath
Source: embedded\logo.bmp; Flags: dontcopy
; начальная заставка:
Source: embedded\logo.wav; Flags: dontcopy
; музон
Source: embedded\WizModernImage-Is.bmp; Flags: dontcopy
; картинка слева:
Source: filters\InnoCallback.dll; DestDir: {tmp}; Flags: dontcopy
Source: filters\callnsis.dll; Flags: dontcopy
Source: filters\AdvSplash.dll; Flags: dontcopy
Source: filters\waterctrl.dll; Flags: dontcopy
; эффекты

[Tasks]
Name: additional; Description: Выберите желаемое действие
Name: additional\PROG; Description: Установить VMware ThinApp_4.6.1-361923; Flags: unchecked
Name: additional\RUS; Description: Установить русификатор; Flags: unchecked
Name: additional\ADAM; Description: Посетить сайт русификации; Flags: unchecked

[Run]
Filename: {tmp}\vmware-thinapp-enterprise-4.6.1-361923.exe; Tasks: additional\PROG; Flags: hidewizard
Filename: {tmp}\vmware.exe; Tasks: additional\RUS; Flags: hidewizard
Filename: http://www.wylek.ru; Tasks: additional\ADAM; Flags: shellexec hidewizard

[CustomMessages]
Russian.NameAndVersion=%1, версия %2
Russian.AdditionalIcons=Дополнительные значки:
Russian.CreateDesktopIcon=Создать значок на Рабочем столе
Russian.CreateQuickLaunchIcon=Создать значок в Панели быстрого запуска
Russian.ProgramOnTheWeb=Сайт %1 в Интернете
Russian.UninstallProgram=Деинсталлировать %1
Russian.LaunchProgram=Запустить %1
Russian.AssocFileExtension=Связать %1 с файлами, имеющими расширение %2
Russian.AssocingFileExtension=Связывание %1 с файлами %2...

[Languages]
; These files are stubs
; To achieve better results after recompilation, use the real language files
Name: Russian; MessagesFile: compiler:Languages\Russian.isl

[Messages]
BeveledLabel=Все права  WYLEK (C) 2011

[Code]
procedure CurPageChanged1(CurPageID: Integer);
begin
If CurPageID=wpWelcome then
begin
SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0)
SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0)
end;
end;

function callplug(parentwnd: Integer; pluginname,funcname,param1,param2,param3,param4,param5,param6,param7,param8,param9,param10: PAnsiChar): Integer;
external 'callplug@files:callnsis.dll stdcall';

procedure InitializeWizard2();
var
      val: Integer;
begin
      ExtractTemporaryFile('AdvSplash.dll');
      ExtractTemporaryFile('logo.bmp');
      ExtractTemporaryFile('logo.wav');
      val:=callplug(0,ExpandConstant('{tmp}\AdvSplash.dll'),'show','2800','1400','1200','-1',ExpandConstant('{tmp}\logo'),'','','','','');
end;

procedure CurPageChanged(CurPageID: Integer);
begin
      CurPageChanged1(CurPageID);
end;

procedure InitializeWizard();
begin
      InitializeWizard2();
end;

procedure HideInstallPath();
begin
WizardForm.FileNameLabel.Visible := False;
end;
//*******//
procedure ShowInstallPath();
begin
WizardForm.FileNameLabel.Visible := True;
end;


После сборки установщика и запуска будет диалог выбора действий. Теперь конечный пользователь сам выберет нужное действие. Возможно уже есть русификатор или программа, и не надо будет устанавливать все гамузом. Как по мне, так такая сборка гораздо лучше перепакованной неизвестно кем и как.



Качаем архив с эффектами, установщиком русика и пустым скриптом. Сам файл vmware-thinapp-enterprise-4.6.1-361923.exe скачаете в разделе Портабл у кого его еще нет.
И самое главное, Вы можете использовать этот метод для своих целей! Просто замените файлы в скрите и в папках на свои.

**********
Далі буде

**********


Кстати, вот здесь я уже применил этот метод. Еще добавил в задачу запуск программы.



------------------------------------------
Новичок
  1. Офлайн
  2. Проверенные
  3. 38 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 2 отправлено 10:12, 05.06.2014
Цитата Kopejkin ()
Если возможно, пожалуйста, перезалейте удаленный файл.
Поддерживаю! Перезалейте, пожалуйста.
Сталкер
  1. Офлайн
  2. Знаток
  3. 144 сообщений
  4. Репутация: 1
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 3 отправлено 17:26, 05.06.2014
Цитата Dodakaedr ()
Поддерживаю! Перезалейте, пожалуйста.


Скачать
Новичок
  1. Офлайн
  2. Проверенные
  3. 38 сообщений
  4. Репутация: 0
  5. Сообщение
  6. Личные данные
Полезность: 0 | сообщение № 4 отправлено 21:41, 05.06.2014
pp0312, Спасибо!
 
Перейти
Найти

Доступ закрыт.

  1. Вам запрещено отвечать в темах данного форума.

Последние темы

  1. Radialix 3
    Автор: pangasiys Сегодня, 13:27
  2. PartitionGuru 4.9.3.409_х86_х64_RUS
    Автор: Lupik2 Вчера, 11:30
  3. Задавайте вопросы по русификации и мы...
    Автор: Xabib2302 23:24, 18.11.2017
  4. Поговорим?
    Автор: kurkoff1965 11:15, 18.11.2017
  5. QTranslate 5.4.1 + Portable
    Автор: gazon01 07:21, 15.11.2017
  6. Promt Professional 9.0 Giant &...
    Автор: WYLEK 15:04, 14.11.2017

Изменения статуса

  1. Никто не менял личный статус.