Установщик русификатора на Inno Setup
Небольшие хитрости для установки русификатора.Задача:1. Вывод заставки2. Проиграть музыку или еще какие либо прибамбасы3. Пропатчить
-
Оффлайн
Автор темы
Звание: Легенда
Админ
Сообщений: 2196
Создано тем: 317
Рейтинг: 10
Репа: (245|245|0)
Баллы: 3585
Был: 2025-01-02 21:26
Лайков: 206
Небольшие хитрости для установки русификатора.
Задача:
1. Вывод заставки
2. Проиграть музыку или еще какие либо прибамбасы
3. Пропатчить основной файл – слишком большой для простой установки или замены
Почти все задачи выполняет PatchWise Free, но чтобы выполнить полностью поставленные задачи, не надо быть программистом или гуру в установщиках. Для этих целей возьмем Inno Setup и с помощью скрипта сделаем все как надо. Сразу надо сделать с помощью PatchWise Free укороченный патч. Делает патч и Inno Setup, но рабочих скриптов я так и не нашел в сети. Да и зачем огород городить, если есть PatchWise Free?
Создаем патч на екзешник и пишем инфу
Все данные Документации удаляем, это все будет в Inno Setup
Обязательно переключаем стиль программы на Simple
Если все правильно сделали, то при прогоне патча вид будет такой как ниже.
Я немного откорректировал инфу в PatchWise Free (языковые файлы).
Итак, установщик готов и весит…..79кб
Но время маленьких патчей ушло, сколько лет за Спасибо русики делал, и мы теперь увеличим размер установщика без всякого хлама, а естественным способом.
С помощью 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:
, и мы теперь увеличим размер установщика без всякого хлама, а естественным способом.
С помощью 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:
, и мы теперь увеличим размер установщика без всякого хлама, а естественным способом.
С помощью 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 с заводским установщиком и своим русиком…
Для этой цели вставляем установщик 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
Запускаем компиляцию, и после запуск установщика. Берем бубен и танцуем вокруг компа…
Чтобы скрыть от глаз чайников путь временной установки файлов, дописываем код в самый низ секции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--><img alt="= 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:= 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--><img alt="= False; end; //*******// procedure ShowInstallPath(); begin WizardForm.FileNameLabel.Visible := True; end;
Итак, конечный пользователь сам того не ведая, скачивает установщик и русификатор вместе и дает возможность русификаторщику заработать на нем 1 рубль. Но надо и пользователю дать возможность выбирать при установке или программу или русификатор. Что для этого надо? Правильно, бестолковка! Нужно создать задачу для этого. Пишем так…[Tasks]Name:= 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 скачаете в разделе Портабл у кого его еще нет.
И самое главное, Вы можете использовать этот метод для своих целей! Просто замените файлы в скрите и в папках на свои.**********Далі буде**********
Кстати, вот здесь я уже применил этот метод. Еще добавил в задачу запуск программы.6 мая 2011 - 15:42 / #1 -
5 июня 2014 - 10:12 / #2
-
5 июня 2014 - 17:26 / #3
-
pp0312, Спасибо!5 июня 2014 - 21:41 / #4
Статистика форума, пользователей онлайн: 0 (за последние 20 минут)
---
- Создано тем
- 1205
- Всего сообщений
- 15879
- Пользователей
- 18075
- Новый участник
- dgiharev