• Добро пожаловать на WYLEK.ru. Пожалуйста, войдите или зарегистрируйтесь.
 
127 гостей, 1 пользователь

avatar_WYLEK

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

Автор WYLEK, 06 мая 2011, 15:42:11

« предыдущая - следующая »

WYLEKАвтор темы

Тема создана 06 мая 2011, 15:42:11 Последнее редактирование: 04 августа 2018, 21:52:11 от WYLEK
Небольшие хитрости для установки русификатора.



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

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

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



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



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



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



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

;InnoSetupVersion=5.3.3
[Setup]AppName=VMware ThinApp
AppVerName=4.6.1-361923
AppVersion=VMware ThinApp
DefaultDirName={pf}VMwareVMware ThinApp
DefaultGroupName=VMware ThinApp
OutputBaseFilename=VMware ThinApp_4.6.1-361923_RU
Compression=bzip
LicenseFile=embeddedLicense.rtf
WizardImageFile=embeddedWizardImage.bmp
WizardSmallImageFile=    embeddedWizardSmallImage.bmp
DisableDirPage=true
DisableProgramGroupPage=true
DisableReadyPage=true
DisableFinishedPage=true
Restar t If  NeededByRun=false
PrivilegesRequired=poweruser
SetupIconFile=embedded128.ico
[Files]Source: {app}vmware.exe; DestDir: {tmp}; Attribs: hidden; Flags: deleteafterinstall
Source: embeddedlogo.bmp; Flags: dontcopy
; начальная заставка:
Source: embeddedlogo.wav; Flags: dontcopy
; музон
Source: embeddedWizModernImage-Is.bmp; Flags: dontcopy
; картинка слева:
Source: filtersInnoCallback.dll; DestDir: {tmp}; Flags: dontcopy
Source: filterscallnsis.dll; Flags: dontcopy
Source: filtersAdvSplash.dll; Flags: dontcopy
Source: filterswaterctrl.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:LanguagesRussian.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 с заводским установщиком и своим русиком...

Для этой цели вставляем установщик Войдите на сайт для перехода по ссылке  в папку {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

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

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

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

;InnoSetupVersion=5.3.3
[Setup]AppName=VMware ThinApp
AppVerName=4.6.1-361923
AppVersion=VMware ThinApp
DefaultDirName={pf}VMwareVMware ThinApp
DefaultGroupName=VMware ThinApp
OutputBaseFilename=VMware ThinApp_4.6.1-361923_RU
Compression=bzip
LicenseFile=embeddedLicense.rtf
WizardImageFile=embeddedWizardImage.bmp
WizardSmallImageFile=    embeddedWizardSmallImage.bmp
DisableDirPage=true
DisableProgramGroupPage=true
DisableReadyPage=true
DisableFinishedPage=true
Restar t If  NeededByRun=false
PrivilegesRequired=poweruser
SetupIconFile=embedded128.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: embeddedlogo.bmp; Flags: dontcopy
; начальная заставка:
Source: embeddedlogo.wav; Flags: dontcopy
; музон
Source: embeddedWizModernImage-Is.bmp; Flags: dontcopy
; картинка слева:
Source: filtersInnoCallback.dll; DestDir: {tmp}; Flags: dontcopy
Source: filterscallnsis.dll; Flags: dontcopy
Source: filtersAdvSplash.dll; Flags: dontcopy
Source: filterswaterctrl.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:LanguagesRussian.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 рубль. Но надо и пользователю дать возможность выбирать при установке или программу или русификатор. Что для этого надо? Правильно, бестолковка! Нужно создать задачу для этого. Пишем так...

[Tasks]Name: additional; Description: Выберите желаемое действие
Name: additionalPROG; Description: Установить VMware ThinApp_4.6.1-361923; Flags: unchecked
Name: additionalRUS; Description: Установить русификатор; Flags: unchecked
Name: additionalADAM; Description: Посетить сайт русификации; Flags: unchecked
[Run]Filename: {tmp}vmware-thinapp-enterprise-4.6.1-361923.exe; Tasks: additionalPROG; Flags: hidewizard
Filename: {tmp}vmware.exe; Tasks: additionalRUS; Flags: hidewizard
Filename: http://www.wylek.ru; Tasks: additionalADAM; Flags: shellexec hidewizard

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

;InnoSetupVersion=5.3.3
[Setup]AppName=VMware ThinApp
AppVerName=4.6.1-361923
AppVersion=VMware ThinApp
DefaultDirName={pf}VMwareVMware ThinApp
DefaultGroupName=VMware ThinApp
OutputBaseFilename=VMware ThinApp_4.6.1-361923_RU
Compression=bzip
LicenseFile=embeddedLicense.rtf
WizardImageFile=embeddedWizardImage.bmp
WizardSmallImageFile=   embeddedWizardSmallImage.bmp
DisableDirPage=true
DisableProgramGroupPage=true
DisableReadyPage=true
DisableFinishedPage=true
Restart If  NeededByRun=false
PrivilegesRequired=poweruser
SetupIconFile=embedded128.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: embeddedlogo.bmp; Flags: dontcopy
; начальная заставка:
Source: embeddedlogo.wav; Flags: dontcopy
; музон
Source: embeddedWizModernImage-Is.bmp; Flags: dontcopy
; картинка слева:
Source: filtersInnoCallback.dll; DestDir: {tmp}; Flags: dontcopy
Source: filterscallnsis.dll; Flags: dontcopy
Source: filtersAdvSplash.dll; Flags: dontcopy
Source: filterswaterctrl.dll; Flags: dontcopy
; эффекты
[Tasks]Name: additional; Description: Выберите желаемое действие
Name: additionalPROG; Description: Установить VMware ThinApp_4.6.1-361923; Flags: unchecked
Name: additionalRUS; Description: Установить русификатор; Flags: unchecked
Name: additionalADAM; Description: Посетить сайт русификации; Flags: unchecked
[Run]Filename: {tmp}vmware-thinapp-enterprise-4.6.1-361923.exe; Tasks: additionalPROG; Flags: hidewizard
Filename: {tmp}vmware.exe; Tasks: additionalRUS; Flags: hidewizard
Filename: http://www.wylek.ru; Tasks: additionalADAM; 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:LanguagesRussian.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 скачаете в разделе Портабл у кого его еще нет.
И самое главное, Вы можете использовать этот метод для своих целей! Просто замените файлы в скрите и в папках на свои.

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

Кстати, вот Войдите на сайт для перехода по ссылке я уже применил[/leech] этот метод. Еще добавил в задачу запуск программы.


Dodakaedr

Ответ #1 : 05 июня 2014, 10:12:35 #1 Последнее редактирование: 04 августа 2018, 00:15:53 от WYLEK
Цитата: KopejkinЕсли возможно, пожалуйста, перезалейте удаленный файл.
Поддерживаю! Перезалейте, пожалуйста.

pp0312

Ответ #2 : 05 июня 2014, 17:26:46 #2 Последнее редактирование: 04 августа 2018, 00:16:30 от WYLEK
Цитата: DodakaedrПоддерживаю! Перезалейте, пожалуйста.

 Скачать

Dodakaedr

pp0312, Спасибо!

* Ваши права на сайте

    TinyPortal

  • Вы не можете создавать статьи.
  • Вы не можете изменять свои статьи.
  • Вы не можете писать комментарии.
  • Вы не можете управлять статьями.
  • Вы не можете загружать файлы в TPdownloads.
  • Вы не можете управлять TPlistimages.

    Simple Machines

  • Вы не можете удалять темы.
  • Вы не можете создавать темы.
  • Вы не можете отвечать на сообщения.
  • Вы не можете прикреплять файлы.
  • Вы не можете изменять свои сообщения.
  • Вы не можете удалять свои сообщения.

 аталог@MAIL.RU - каталог ресурсов интернет Яндекс.Метрика