avatar_WYLEK

Собираем RuPack

Автор WYLEK, 25 апреля 2011, 14:20:54

« Установщик русификатора на Inno Setup | РуПаки и установщики »

WYLEKАвтор темы

25 апреля 2011, 14:20:54 Последнее редактирование: 04 августа 2018, 22:01:33 от WYLEK

Пишу по просьбе 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;

Запускайте компиляцию и наслаждайтесь своей работой!

Stalevar

Геннадий Спасибо!!!!
Тут нахрапом не возьмёшь, прочитал три раза, что то уложилось, что то не допер.
Буду пробовать, иначе ничего не получится.
Храни меня Господь от тех, кому я верю. Кому не верю - тех остерегусь я сам.

Stalevar

Inno Setup Unpacker  у меня не распаковал, говорит мол не тот экзешник. Universal Extractor распаковал и выдал следующую картину.


И ни одного скрипта установки. Захожу в папку data, там ещё папки


Захожу в папку OFFLINE вижу море папок и только тут нахожу нужные мне файлы для замены, но каждый файл идёт в отдельной паке, к чему бы это? А мне нужно вкинуть вместо одного в папке 34, как быть или это не влияет?


Ну вот заменил я файлы и всё на этом, нет скриптов, нет ничего, сижу курю, что делать дальше незнаю.
Как это всё собрать до кучи, обратно в инсталлятор.
Храни меня Господь от тех, кому я верю. Кому не верю - тех остерегусь я сам.

WYLEKАвтор темы

25 апреля 2011, 23:41:24 #3 Последнее редактирование: 04 августа 2018, 22:03:10 от WYLEK
Цитата: StalevarНу вот заменил я файлы и всё на этом, нет скриптов, нет ничего, сижу курю, что делать дальше незнаю.

Кинь линк в личку

я гляну что к чему

Stalevar

Спасибо Гена!!!
Я тебе на Facebook скину, за одно и с днюхой поздравлю.
Храни меня Господь от тех, кому я верю. Кому не верю - тех остерегусь я сам.

Fiks

WYLEK, с каждым днем все интереснее будем изучать

WYLEKАвтор темы

26 апреля 2011, 12:43:25 #6 Последнее редактирование: 04 августа 2018, 22:03:43 от WYLEK
Цитата: StalevarInno Setup Unpacker у меня не распаковал, говорит мол не тот экзешник. Universal Extractor распаковал и выдал следующую картину.

Я посмотрел, это не  Inno Setup установщик.
здесь надо другой подход. Надо прогу для отслеживания реестра и папок.
Узнать куда закидает файлы и что в реестр.
Лучше сделать на такое русификатор.
Вечером посмотрю что до чего.

Stealthmax

Войдите на сайт для перехода по ссылке сразу ошибки подчеркивает, синтаксис вроде пашет норм. По сути неплохой продукт.

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

    Light Portal

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

    Simple Machines

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

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