РуПаки и установщики

Поделюсь своими наработками для Inno Setup. И хотя я и половины не знаю для работы
  1. Оффлайн

    Автор темы

    WYLEK

    Звание: Легенда

    Админ

    Сообщений: 2198

    Создано тем: 317

    Рейтинг: 10

    Репа: (245|245|0)

    Баллы: 3595

    Был: 2024-12-09 09:32

    Лайков: 204

    РуПаки и установщики


    Поделюсь своими наработками для Inno Setup. И хотя я и половины не знаю для работы с этой программой, но кое-что все таки умею. Представляю скрип для установки русификатора. Он собран на двух скриптах от китайского товарища restools. Это интересные эффекты заставки, музыки и капель воды на картинке. Скрипт подойдет для любых русификаторов, закинуть файлы можно в любую директорию. В папку {app} вставьте свои файлы и пропишите вручную в скрипте пути.
    Для наглядности я в архив вставил все файлы присутствующие в скрипте, так что запускайте и собирайте установщик сразу. И самое главное, вам нужно установить вот эту весчь - ISPack_5.3.9_Full_Unicode_FULL+Plugs-I-S. Что там находится…

    Inno Setup 5.3.9 - Компиллятор.
    ISSJoiner v12 - Соединение двух скриптов .ISS. Выделение,ПКМ - "Join scripts".
    ISUnpacker Explorer 1.6.9 - Распаковка инсталляторов. ПКМ - "Открыть в ISUnpacker"
    ISSkin Builder v13.0 - Создание скинов Inno Setup.
    ISTool 5.3.0.1 - Инструменты для создания установочных скриптов Inno Setup.
    IS Form Desiner v5.1.8 - Создание страниц инсталлятора.
    Converter REG2ISS 0.0.14 (by Serega) - Конвертирование файлов реестре .REG в .ISS ПКМ на .REG файлах
    Inno Setup Scripting v5.1 - Справочное пособие по Inno Setup.
    Inno Setup HELP & FAQ - Сборник Хелпов и инструкций по Inno Setup.
    Inno Setup Example Scripts - Примеры скриптов Inno Setup.
    Restools Plugins - 16 Плагинов Restools.


    сам скрипт с пояснениями, он есть в архиве

    ; для форума
    ; www.wylek.ru
    [Setup]AppName=ALPlayer
    ; это имя приложения и папка
    AppVerName=русификатор для ALPlayer 2.0.4
    ; это версия приложения
    DefaultDirName={pf}ESTsoft
    ; это каталог приложения - {pf} это Program Files, путь - (DefaultDirName)Program FilesESTsoft(AppName)ALPlayer
    OutputBaseFilename=ALPlayer20_RU
    ; имя выходного файла
    Compression=lzma
    LicenseFile=embeddedLicense.rtf
    VersionInfoVersion=2.0.4
    VersionInfoCompany=WYLEK
    WizardSmallImageFile=embedded modern-header.bmp
    SetupIconFile=embedded104.ico
    ; значок установщика
    [Files]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
    ; эффекты
    Source: {app}English.dll; DestDir: {app}language; Flags: ignoreversion
    ; файл приложения, второй {app} это переменная каталога
    Source: {app}DefSkin.ask; DestDir: {app}skinsEnglish; Flags: ignoreversion
    ; если второй {app} заменить на {commonprogramfiles}, то файл DefSkin.ask полетит в C: Program FilesCommon FilesskinsEnglish
    [INI]Filename: {app}wylek.ru.url; Section: InternetShortcut; Key: URL; String: http://www.wylek.ru
    ; это установится линк на наш сайт
    ; это коды, тут лазить вообще не надо...
    [Code]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';
    // WinAPI єЇКэ, К±јдС­»·єЇКэ, ХвёцєЇКэРиТЄ»ШµчєЇКэ, ·сФтІ»ДЬКµПЦ№¦ДЬ
    function enablewater(ParentWnd: HWND; Left, Top: integer; Bmp: HBITMAP;
          WaterRadius, WaterHeight: integer): BOOL; external 'enablewater@files:waterctrl.dll stdcall';
    //ParentWnd     ·ЕЦГМШР§ґ°їЪµДёёґ°їЪѕд±ъЎЈ
    //Left          ЧуО»ЦГ
    //Top           ЙПО»ЦГ
    //Bmp           О»Нјѕд±ъЎЈ
    //WaterRadius   Л®ОЖ°лѕ¶Ј¬»бБоµЅЛ®ОЖїґЖрАґ·¶О§ёь№гЎЈ
    //WaterHeight   Л®ОЖёЯ¶ИЈ¬»бБоµЅЛ®ОЖїґЖрАґёьЙоЎЈ
    //ЧўТвЈ¬Л®ОЖІејюЧФ¶ЇёщѕЭНјЖ¬АґЙи¶ЁёЯ¶ИєНїн¶ИЈ¬
    //БнНвЛ®ОЖµЧНј±ШРлКЗ·­ЧЄµДНјЖ¬Ј¬ПФКѕµДК±єт»б·­ЧЄНјЖ¬АґПФКѕЎЈ
    function waterblob(x, y: integer; radius, height: integer): BOOL; external 'waterblob@files:waterctrl.dll stdcall';
    // ФЪ x,y µгІъЙъ°лѕ¶ОЄradius, ёЯ¶ИОЄheight µДЛ®ОЖЎЈ
    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';
    //v2 РВФцЈ¬ЙиЦГЛ®ОЖІејюµДёёѕд±ъ
    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<!--smile:= TBitmap.create;
       bmp.LoadFromFile(ExpandConstant('{tmp}WizModernImage-Is.bmp'));
       enablewater(WizardForm.WelcomePage.Handle, 0, 0, bmp.Handle, 3, 50);
       timercallback := WrapTimerProc(@mytimerproc,4); // ЧЄ»» Inno Setup µДєЇКэИлїЪ
       settimer(0, 0, 200, timercallback);  // КµПЦ Timer µДС­»·ЦШёґµчУГєЇКэР§№ы
    end;
    procedure CurPageChanged1(CurPageID--><img alt="= TBitmap.create;
       bmp.LoadFromFile(ExpandConstant('{tmp}WizModernImage-Is.bmp'));
       enablewater(WizardForm.WelcomePage.Handle, 0, 0, bmp.Handle, 3, 50);
       timercallback := WrapTimerProc(@mytimerproc,4); // ЧЄ»» Inno Setup µДєЇКэИлїЪ
       settimer(0, 0, 200, timercallback);  // КµПЦ Timer µДС­»·ЦШёґµчУГєЇКэР§№ы
    end;
    procedure CurPageChanged1(CurPageID:= TBitmap.create;
       bmp.LoadFromFile(ExpandConstant('{tmp}WizModernImage-Is.bmp'));
       enablewater(WizardForm.WelcomePage.Handle, 0, 0, bmp.Handle, 3, 50);
       timercallback := WrapTimerProc(@mytimerproc,4); // ЧЄ»» Inno Setup µДєЇКэИлїЪ
       settimer(0, 0, 200, timercallback);  // КµПЦ Timer µДС­»·ЦШёґµчУГєЇКэР§№ы
    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'),'','','','','');
       // ФЪ NSIS µДАэЧУЦРµчУГКЗИзПВµДЈє
       // SetOutPath $TEMP                    # ЙиЦГКдіцО»ЦГОЄБЩК±ДїВј
       // File /oname=logo.bmp "my_splash.bmp"           # КН·ЕОДјю
       // File /oname=logo.wav "my_splashshit.wav"       # КН·ЕОДјю
       // advsplash::show 2800 1400 1200 -1 $TEMPspltmp # µчУГІејю
       // Pop $0                    # ИЎ·µ»ШЦµЈє ·µ»Ш '1' ±нКѕУГ»§МбЗ°№Ш±ХЙБЖБ, ·µ»Ш '0' ±нКѕЙБЖБХэіЈЅбКш, ·µ»Ш '-1' ±нКѕЙБЖБПФКѕіцґн
       // »щ±ѕЙПЈ¬µчУГµД·Ѕ·Ё¶јКЗТ»СщµДЈ¬ЛщТФЦ»ТЄЙФЙФїґїґ NSIS µДІејюАэЧУЈ¬ДгѕНїЙТФФЪ INNO ЦРАыУГТФЙП·Ѕ·ЁЅшРРµчУГ
       if val = 1 then
         MsgBox('Дгµг»чБЛЙБЖБґ°їЪЈ¬µјЦВЙБЖБМбЗ°№Ш±ХЈЎ', mbConfirmation, MB_OK);
    end;
    procedure InitializeWizard();
    begin
       InitializeWizard1();
       InitializeWizard2();
    end;
    procedure CurPageChanged(CurPageID: Integer);
    begin
       CurPageChanged1(CurPageID);
    end;
    procedure DeinitializeSetup();
    begin
       DeinitializeSetup1();
    end;
    [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


    Вот этой программой будете все скрипты переделывать по своему желанию – ISTool, и собирать ей тоже. Для начала, я думаю, хватит. Обсуждаем и не стесняемся все вместе. Все знают только идиоты или гении, а мы нормальные люди и должны учиться друг у друга.

    Качаем все вместе…

    Внимание! У вас нет прав для просмотра скрытого текста.
    Сообщение отредактировал WYLEK 4 ноября 2024 - 21:07

    17 апреля 2011 - 17:14 / #1
  2. Оффлайн

    Leserg

    Звание: Ветеран

    Команда сайта

    Сообщений: 946

    Создано тем: 79

    Рейтинг: 8

    Репа: (131|131|0)

    Баллы: 1681

    Был: 2024-12-12 23:16

    Лайков: 167

    Я никогда с InnoSetup не работал (чуть-чуть с NSIS).
    Вопрос: он позволяет создавать патчи (наподобии с программой PatchWise Free)? И еще вопрос по приведенному коду: у меня в браузере некоторые его строки, которые начинаются на //, отображается в таком виде: Л®ОЖ°лѕ¶Ј¬»бБоµЅЛ®ОЖїґЖрАґ·¶О§ёь№гЎЈ
    Это так и должно быть или это у меня проблемы? И меня просьба: делать все текстовые файлы (*.txt) в кодировке UTF-8, названия файлов давать латиницей. У меня система немецкая и с кириллицей не дружит. Но, если этого нельзя сделать, по каким-либо причинам, то буду тогда сам решать эти небольшие неувязочки. smile Проблем, как говорится, нет.

    Кто ищет, тот всегда найдет!

    17 апреля 2011 - 21:12 / #2
  3. Оффлайн

    Автор темы

    WYLEK

    Звание: Легенда

    Админ

    Сообщений: 2198

    Создано тем: 317

    Рейтинг: 10

    Репа: (245|245|0)

    Баллы: 3595

    Был: 2024-12-09 09:32

    Лайков: 204

    Цитата: Leserg
    у меня в браузере некоторые его строки, которые начинаются на //, отображается в таком виде: Л®ОЖ°лѕ¶Ј¬»бБоµЅЛ®ОЖїґЖрАґ·¶О§ёь№гЎЈ



    Это китайский язык, а кавычки в коде это команда конца кода и можно описание за ними делать. Вот создатель кода и написал....только на своем языке biggrin

    Цитата: Leserg
    И меня просьба: делать все текстовые файлы (*.txt) в кодировке UTF-8, названия файлов давать латиницей.



    Но это само собой. Так в моем примере нет русских имен. А файл wylek.iss открывать нужно прогой ISTool
    Сообщение отредактировал 4 августа 2018 - 22:06

    17 апреля 2011 - 21:35 / #3
  4. Оффлайн

    Leserg

    Звание: Ветеран

    Команда сайта

    Сообщений: 946

    Создано тем: 79

    Рейтинг: 8

    Репа: (131|131|0)

    Баллы: 1681

    Был: 2024-12-12 23:16

    Лайков: 167

    Цитата: WYLEK
    Так в моем примере нет русских имен.


    Да, нету. Но вот архив назван по русски - форум.rar. Ну ничего страшного, все в порядке. smile
    Сообщение отредактировал 4 августа 2018 - 22:06

    Кто ищет, тот всегда найдет!

    17 апреля 2011 - 22:30 / #4
  5. Оффлайн

    Leserg

    Звание: Ветеран

    Команда сайта

    Сообщений: 946

    Создано тем: 79

    Рейтинг: 8

    Репа: (131|131|0)

    Баллы: 1681

    Был: 2024-12-12 23:16

    Лайков: 167

    Я тут по InnoSetup чуть порыл. Можно и им делать патчи. Прикручивается к нему DLL, называется VPatch. Только в отличии от PatchWise все ручками писать надо sad .

    Кто ищет, тот всегда найдет!

    19 апреля 2011 - 01:05 / #5
  6. Оффлайн

    Автор темы

    WYLEK

    Звание: Легенда

    Админ

    Сообщений: 2198

    Создано тем: 317

    Рейтинг: 10

    Репа: (245|245|0)

    Баллы: 3595

    Был: 2024-12-09 09:32

    Лайков: 204

    Цитата: Leserg
    Я тут по InnoSetup чуть порыл. Можно и им делать патчи. Прикручивается к нему DLL, называется VPatch. Только в отличии от PatchWise все ручками писать надо



    Да видел я это, и переделанные на русский язык скрипты(описание) есть у меня. Но живых примеров ноль...
    Видать не ахти как работает.
    Сообщение отредактировал 4 августа 2018 - 22:07

    19 апреля 2011 - 08:59 / #6
  7. Оффлайн

    Stalevar

    Звание: Эксперт

    Команда

    Сообщений: 488

    Создано тем: 85

    Рейтинг: 6

    Репа: (59|59|0)

    Баллы: 51

    Страна: не указана!

    Был: 2015-05-25 08:56

    Лайков: 22

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

    Храни меня Господь от тех, кому я верю. Кому не верю - тех остерегусь я сам.

    25 апреля 2011 - 12:35 / #7
  8. Оффлайн

    Автор темы

    WYLEK

    Звание: Легенда

    Админ

    Сообщений: 2198

    Создано тем: 317

    Рейтинг: 10

    Репа: (245|245|0)

    Баллы: 3595

    Был: 2024-12-09 09:32

    Лайков: 204

    Цитата: Stalevar
    Геннадий такой вопрос.
    Я распаковал экзешник UniExtract, появилось куево множество папок, я заменил в папках нужные мне файлы, чем и главное как, всё это пиршество собрать назад в инсталлятор?



    Вот как раз сейчас заливаю картинки с мануала по RuPack-у
    Практически все они одинаково настраиваются,
    Сообщение отредактировал 4 августа 2018 - 22:07

    25 апреля 2011 - 14:02 / #8
  9. Оффлайн

    Stalevar

    Звание: Эксперт

    Команда

    Сообщений: 488

    Создано тем: 85

    Рейтинг: 6

    Репа: (59|59|0)

    Баллы: 51

    Страна: не указана!

    Был: 2015-05-25 08:56

    Лайков: 22

    Ждёмс!!!

    Храни меня Господь от тех, кому я верю. Кому не верю - тех остерегусь я сам.

    25 апреля 2011 - 14:08 / #9
  10. Оффлайн

    Автор темы

    WYLEK

    Звание: Легенда

    Админ

    Сообщений: 2198

    Создано тем: 317

    Рейтинг: 10

    Репа: (245|245|0)

    Баллы: 3595

    Был: 2024-12-09 09:32

    Лайков: 204

    Цитата: Leserg
    Я тут по InnoSetup чуть порыл. Можно и им делать патчи. Прикручивается к нему DLL, называется VPatch. Только в отличии от PatchWise все ручками писать надо




    Вообщим, biggrin победил я патч на InnoSetup!!!
    На примере проги Gold Burn я методом тыка (инфы ноль в сети) и перевода с китайского surprised и сборка патча на NSIS biggrin собрал рабочий скрипт и все прибамбасы! А главное - я понял что и как делать...Все пропатчилось, и бэкап есть, только один минус - нет сообщений о работе патча surprised . Чтобы узнать произошло пропатчивание или нет, надо запустить файл, но главного екзешника если не найдет, орет благим матом biggrin
    Сообщение отредактировал 4 августа 2018 - 22:08

    22 мая 2011 - 16:02 / #10

Статистика форума, пользователей онлайн: 0 (за последние 20 минут)

---
Создано тем
1200
Всего сообщений
15791
Пользователей
18040
Новый участник
a009rs09