Собираем RuPack
- 
  ОффлайнАвтор темы Звание: Легенда Админ Сообщений: 2237 Создано тем: 323 Рейтинг: 10 Репа:  (246|246|0) (246|246|0) Баллы: 4035 Был: 2025-08-30 08:05 Лайков: 220  
 Пишу по просьбе 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]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
 ; эффекты
 [INI]Filename: {app}wylek.ru.url; Section: InternetShortcut; Key: URL; String: http://www.wylek.ru
 Вот как на скрине. Раздел [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] – прежнее удалитеSource: embeddedwylek.png; Flags: dontcopy
 [INI]Filename: {app}wylek.ru.url; Section: InternetShortcut; Key: URL; String: http://www.wylek.ru 
 Нажмите слева функцию Код и удалите оттуда все. Скопируйте ниже код и вставьте туда.function GetSysColor(nIndex: Integer): DWORD; external 'GetSysColor@user32.dll stdcall';
 var
 GifFrameCount: Integer;
 function ColorToRGB(Color: TColor): Longint;
 begin
 if Color < 0 then
 Result := GetSysColor(Color and $000000FF)
 else
 Result := Color;
 end;
 procedure PlayListCallback(LastImgIndex: Integer);
 begin
 // ShowFairyEx(0);
 AnimateFairy('(0-'+IntToStr(LastImgIndex)+')', nil);
 end;
 procedure InitializeWizard();
 var
 Btn: TNewButton;
 ImgFile: AnsiString;
 S: AnsiString;
 x, y: Integer;
 BAlpha, TransparentColor: Integer;
 begin
 InitFairy(WizardForm.Handle, 0, 30);
 ImgFile := 'wylek.png';
 ExtractTemporaryFile(ImgFile);
 x := (WizardForm.Width - 350) div 2; // Расположение изображения (горизонталь [X]). По умолчанию 275.
 y := -96; // Расположение изображения (Вертикаль [Y]). По умолчанию -96.
 BAlpha := 255; // Прозрачность изображения. По умолчанию 255.
 TransparentColor := ColorToRGB(clWhite);
 S := S + IntToStr(x) + '|' + IntToStr(y) + '|' + IntToStr(BAlpha) + '|' + IntToStr(TransparentColor) + '|' + ExpandConstant('{tmp}'+ImgFile);
 AddImgsToList(S, @PlayListCallback);
 end;
 procedure DeinitializeSetup();
 begin
 HideFairy;
 WizardForm.Hide;
 UninitFairy;
 end;
 Запускайте компиляцию и наслаждайтесь своей работой!25 апреля 2011 - 14:20 / #1
- 
  Геннадий Спасибо!!!!
 Тут нахрапом не возьмёшь, прочитал три раза, что то уложилось, что то не допер.
 Буду пробовать, иначе ничего не получится.Храни меня Господь от тех, кому я верю. Кому не верю - тех остерегусь я сам. 
 25 апреля 2011 - 22:44 / #2
- 
  Inno Setup Unpacker у меня не распаковал, говорит мол не тот экзешник. Universal Extractor распаковал и выдал следующую картину.
 И ни одного скрипта установки. Захожу в папку data, там ещё папки
 Захожу в папку OFFLINE вижу море папок и только тут нахожу нужные мне файлы для замены, но каждый файл идёт в отдельной паке, к чему бы это? А мне нужно вкинуть вместо одного в папке 34, как быть или это не влияет?
 Ну вот заменил я файлы и всё на этом, нет скриптов, нет ничего, сижу курю, что делать дальше незнаю.
 Как это всё собрать до кучи, обратно в инсталлятор.Храни меня Господь от тех, кому я верю. Кому не верю - тех остерегусь я сам. 
 25 апреля 2011 - 23:30 / #3
- 
  ОффлайнАвтор темы Звание: Легенда Админ Сообщений: 2237 Создано тем: 323 Рейтинг: 10 Репа:  (246|246|0) (246|246|0) Баллы: 4035 Был: 2025-08-30 08:05 Лайков: 220 25 апреля 2011 - 23:41 / #4
- 
  Спасибо Гена!!!
 Я тебе на Facebook скину, за одно и с днюхой поздравлю.Храни меня Господь от тех, кому я верю. Кому не верю - тех остерегусь я сам. 
 25 апреля 2011 - 23:48 / #5
- 
  WYLEK, с каждым днем все интереснее будем изучать будем изучать 26 апреля 2011 - 05:15 / #6 26 апреля 2011 - 05:15 / #6
- 
  ОффлайнАвтор темы Звание: Легенда Админ Сообщений: 2237 Создано тем: 323 Рейтинг: 10 Репа:  (246|246|0) (246|246|0) Баллы: 4035 Был: 2025-08-30 08:05 Лайков: 220 Цитата: StalevarInno Setup Unpacker у меня не распаковал, говорит мол не тот экзешник. Universal Extractor распаковал и выдал следующую картину.
 
 Я посмотрел, это не Inno Setup установщик.
 здесь надо другой подход. Надо прогу для отслеживания реестра и папок.
 Узнать куда закидает файлы и что в реестр.
 Лучше сделать на такое русификатор.
 Вечером посмотрю что до чего.26 апреля 2011 - 12:43 / #7
- 
  ОффлайнЗвание: Новичок Участники Сообщений: 30 Создано тем: 0 Рейтинг: 2 Репа:   Баллы: 51 Был: 2025-03-29 04:53 Inno Script Studio сразу ошибки подчеркивает, синтаксис вроде пашет норм. По сути неплохой продукт.8 июня 2013 - 03:45 / #8
Статистика форума, пользователей онлайн: 1 (за последние 20 минут)
- Создано тем
- 1223
- Всего сообщений
- 16492
- Пользователей
- 18276
- Новый участник
- emadwizard
 Гость
Гость



 
       
       
      