Этот сайт создан как клуб русификаторщиков. Для нас существуют три основных правила.
1. Мы никому и ничего не должны!
2.Один пришедший на сайт толковый русификаторщик дороже всех пользователей.
3. Мы делаем русификаторы для своего сайта, но в оригинале ими могут пользоваться все в интернете.
Пишу по просьбе Veikko мануал по созданию RuPack-а Photo-Brush 5
Что за программа...
Mediachance Photo Brush - многофункциональный графический редактор с функциями рисования картин и ретуширования цифровых фотографий. В Photo-Brush с помощью текстурных, артистических, натуральных или 3D кистей можно создать оригинальную картину. Есть также функция преобразования фотографий в картины.
Что для этого надо:
ISPack_5.3.9_Full_Unicode_FULL+Plugs-I-S Universal Extractor 1.6 или Inno Setup Unpacker v0.31
Ну, вроде все есть, начнем…
Правый клик по photobrush5.exe и выбираем программу для распаковки установщика
Здесь выбираем Выделить все и жмем кнопочку Извлечь В Universal Extractor 1.6 ничего выбирать не надо, он сам все сделает. Важно – в первом случае имя файла сценария на русском, во втором на енг.
Теперь у нас есть файлы сценария и файлы для установки. Для украшательства установщикаскачайте здесь с новой заставкой. Я опишу два метода с эффектами, но все по порядку. Запустите файл сценария. Его нужно перед компиляцией полечить. Будем работать с именем сценария install_script.iss. После копирования будет такой вид файлов.
Делаем правый клик и выбираем Open with ISTool. Теперь начинаем искать ошибки. Для этого жмите кнопку Компиляции
Вот и первая ошибка, нажмите кнопку Найти ошибку и указатель станет на этой беде.
Это сжатие не поддерживается в Inno Setup, Нажмите кнопку Options и выберите нужное сжатие.
Теперь запускаете опять компиляцию. И о чудо! Сборка произошла без ошибок и установщик готов! Но еще рано радоваться. Надо еще пошевелить ручками. Параметр OutputBaseFilename=photobrush5 – это выходное имя установщика, меняем как надо, например - OutputBaseFilename= Photo-Brush_5.30_RuPack by Viekko. Параметр LicenseFile=embeddedLicense.txt меняем на LicenseFile=embeddedLicense. rtf, тогда ваша лицензия будет в цвете. Теперь полечим запуск программы, это надо для того, чтобы не запускался без спроса пользователя. Нажмите кнопку Выполнить слева
Теперь двойной клик по {app}PhotoBrush.exe или правый клик и выбрать Свойства Поставьте галки в чекбоксы как на скрине. Эти параметры надо ставить в любых собираемых программах. Да, везде есть контекстное меню. Наведите на чекбокс и читайте.
Теперь остались Сообщения и Язык. Так как во всех программах они одинаковые, просто скопируйте внизу и вставьте в свой сценарий
[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=Мой RuPack, никому не отдам...
Будет вот так у вас в сценарии. Внизу, я думаю, знаете что писать.
Для этой программы нужно еще внести изменения в реестр. Можно конечно просто сбросить его, но зачем огород городить… Нажмите слева функцию Реестр по чистому полю правый клик. Выберите функцию Импортировать из файла. Файл реестра в наличии - photobrush5.reg. После внесения данных в реестр сохраните проект.
Запускайте компиляцию и можете насладиться своей работой! Я думаю, что вы не забыли поменять енг файлы на рус? Если забыли, то сделайте это! Теперь у вас рабочий сценарий, но давайте украсим установку. Вот это вставьте в разрыв между [Files] и [Registry]
Вот как на скрине. Раздел [INI]вставляем как тайный агент рекламы. После установки в папке с программой будет линк на наш сайт.
Дальше, слева войдите в Код и вставьте это
type TTimerProc = procedure(h:longword; msg:longword; idevent:longword; dwTime:longword); function WrapTimerProc(callback:TTimerProc; paramcount:integer):longword; external 'wrapcallback@files:innocallback.dll stdcall'; function SetTimer(hWnd: longword; nIDEvent, uElapse: longword; lpTimerFunc: longword): longword; external 'SetTimer@user32.dll stdcall'; function enablewater(ParentWnd: HWND; Left, Top: integer; Bmp: HBITMAP; WaterRadius, WaterHeight: integer): BOOL; external 'enablewater@files:waterctrl.dll stdcall'; function waterblob(x, y: integer; radius, height: integer): BOOL; external 'waterblob@files:waterctrl.dll stdcall'; function flattenwater(): BOOL; external 'flattenwater@files:waterctrl.dll stdcall'; function disablewater(): BOOL; external 'disablewater@files:waterctrl.dll stdcall'; function setwaterparent(ParentWnd: HWND): BOOL; external 'setwaterparent@files:waterctrl.dll stdcall'; var bmp: TBitmap; procedure mytimerproc(h:longword; msg:longword; idevent:longword; dwTime:longword); begin waterblob(random(162), random(289), random(5), random(200)); end; procedure InitializeWizard1(); var timercallback: longword; begin ExtractTemporaryFile('WizModernImage-Is.bmp'); bmp := TBitmap.create; bmp.LoadFromFile(ExpandConstant('{tmp}WizModernImage-Is.bmp')); enablewater(WizardForm.WelcomePage.Handle, 0, 0, bmp.Handle, 3, 50); timercallback := WrapTimerProc(@mytimerproc,4); settimer(0, 0, 200, timercallback); end; procedure CurPageChanged1(CurPageID: Integer); begin if CurPageID = wpWelcome then begin setwaterparent(WizardForm.WelcomePage.Handle); // waterblob(70, 198, 10, 1000); end else if CurPageID = wpFinished then begin setwaterparent(WizardForm.FinishedPage.Handle); // waterblob(70, 198, 10, 1000); end else flattenwater(); end; procedure DeinitializeSetup1(); begin disablewater(); bmp.Free; 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 InitializeWizard(); begin InitializeWizard1(); InitializeWizard2(); end; procedure CurPageChanged(CurPageID: Integer); begin CurPageChanged1(CurPageID); end; procedure DeinitializeSetup(); begin DeinitializeSetup1(); end;
Жмите кнопку Сохранить скрипт и закройте его. Кнопка вверху слева. Зайдите в папку embedded и сделайте себе лицензию – файл License.rtf и графику. Прикол, но скрин должен выглядеть вот так
Всё!!! Теперь запускайте сценарий и делайте компиляцию. Готовый установщик будет в папке Output
При запуске будет выведена заставка и звук. Теперь второй эффект. Мы сделаем название нашей команды шапкой на окне установщика. Будет вот так.
Для этого небольшие переделки. Вставьте как на скрине эту запись - #include "fairy.iss"
Вот это вставьте в разрыв между [Files] и [Registry] – прежнее удалите
Inno Setup Unpacker у меня не распаковал, говорит мол не тот экзешник. Universal Extractor распаковал и выдал следующую картину.
И ни одного скрипта установки. Захожу в папку data, там ещё папки
Захожу в папку OFFLINE вижу море папок и только тут нахожу нужные мне файлы для замены, но каждый файл идёт в отдельной паке, к чему бы это? А мне нужно вкинуть вместо одного в папке 34, как быть или это не влияет?
Ну вот заменил я файлы и всё на этом, нет скриптов, нет ничего, сижу курю, что делать дальше незнаю. Как это всё собрать до кучи, обратно в инсталлятор.
Сообщение отредактировал 4 августа 2018 - 22:02
Храни меня Господь от тех, кому я верю. Кому не верю - тех остерегусь я сам.
Inno Setup Unpacker у меня не распаковал, говорит мол не тот экзешник. Universal Extractor распаковал и выдал следующую картину.
Я посмотрел, это не Inno Setup установщик. здесь надо другой подход. Надо прогу для отслеживания реестра и папок. Узнать куда закидает файлы и что в реестр. Лучше сделать на такое русификатор. Вечером посмотрю что до чего.