РуПаки и установщики
-
Оффлайн
Автор темы
Звание: Легенда
Админ
Сообщений: 2199
Создано тем: 317
Рейтинг: 10
Репа: (245|245|0)
Баллы: 3600
Был: 2024-12-25 21:15
Лайков: 205
Поделюсь своими наработками для 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:0717 апреля 2011 - 17:14 / #1 -
Оффлайн
Звание: Ветеран
Команда сайта
Сообщений: 949
Создано тем: 79
Рейтинг: 8
Репа: (131|131|0)
Баллы: 1696
Был: 2024-12-25 23:00
Лайков: 173
Я никогда с InnoSetup не работал (чуть-чуть с NSIS).
Вопрос: он позволяет создавать патчи (наподобии с программой PatchWise Free)? И еще вопрос по приведенному коду: у меня в браузере некоторые его строки, которые начинаются на //, отображается в таком виде: Л®ОЖ°лѕ¶Ј¬»бБоµЅЛ®ОЖїґЖрАґ·¶О§ёь№гЎЈ
Это так и должно быть или это у меня проблемы? И меня просьба: делать все текстовые файлы (*.txt) в кодировке UTF-8, названия файлов давать латиницей. У меня система немецкая и с кириллицей не дружит. Но, если этого нельзя сделать, по каким-либо причинам, то буду тогда сам решать эти небольшие неувязочки. Проблем, как говорится, нет.17 апреля 2011 - 21:12 / #2 -
Оффлайн
Автор темы
Звание: Легенда
Админ
Сообщений: 2199
Создано тем: 317
Рейтинг: 10
Репа: (245|245|0)
Баллы: 3600
Был: 2024-12-25 21:15
Лайков: 205
Цитата: Lesergу меня в браузере некоторые его строки, которые начинаются на //, отображается в таком виде: Л®ОЖ°лѕ¶Ј¬»бБоµЅЛ®ОЖїґЖрАґ·¶О§ёь№гЎЈ
Это китайский язык, а кавычки в коде это команда конца кода и можно описание за ними делать. Вот создатель кода и написал....только на своем языкеЦитата: LesergИ меня просьба: делать все текстовые файлы (*.txt) в кодировке UTF-8, названия файлов давать латиницей.
Но это само собой. Так в моем примере нет русских имен. А файл wylek.iss открывать нужно прогой ISTool17 апреля 2011 - 21:35 / #3 -
Оффлайн
Звание: Ветеран
Команда сайта
Сообщений: 949
Создано тем: 79
Рейтинг: 8
Репа: (131|131|0)
Баллы: 1696
Был: 2024-12-25 23:00
Лайков: 173
Цитата: WYLEKТак в моем примере нет русских имен.
Да, нету. Но вот архив назван по русски - форум.rar. Ну ничего страшного, все в порядке.17 апреля 2011 - 22:30 / #4 -
Оффлайн
Звание: Ветеран
Команда сайта
Сообщений: 949
Создано тем: 79
Рейтинг: 8
Репа: (131|131|0)
Баллы: 1696
Был: 2024-12-25 23:00
Лайков: 173
Я тут по InnoSetup чуть порыл. Можно и им делать патчи. Прикручивается к нему DLL, называется VPatch. Только в отличии от PatchWise все ручками писать надо .19 апреля 2011 - 01:05 / #5 -
Оффлайн
Автор темы
Звание: Легенда
Админ
Сообщений: 2199
Создано тем: 317
Рейтинг: 10
Репа: (245|245|0)
Баллы: 3600
Был: 2024-12-25 21:15
Лайков: 205
Цитата: LesergЯ тут по InnoSetup чуть порыл. Можно и им делать патчи. Прикручивается к нему DLL, называется VPatch. Только в отличии от PatchWise все ручками писать надо
Да видел я это, и переделанные на русский язык скрипты(описание) есть у меня. Но живых примеров ноль...
Видать не ахти как работает.19 апреля 2011 - 08:59 / #6 -
Геннадий такой вопрос.
Я распаковал экзешник UniExtract, появилось куево множество папок, я заменил в папках нужные мне файлы, чем и главное как, всё это пиршество собрать назад в инсталлятор?Храни меня Господь от тех, кому я верю. Кому не верю - тех остерегусь я сам.
25 апреля 2011 - 12:35 / #7 -
Оффлайн
Автор темы
Звание: Легенда
Админ
Сообщений: 2199
Создано тем: 317
Рейтинг: 10
Репа: (245|245|0)
Баллы: 3600
Был: 2024-12-25 21:15
Лайков: 205
Цитата: StalevarГеннадий такой вопрос.
Я распаковал экзешник UniExtract, появилось куево множество папок, я заменил в папках нужные мне файлы, чем и главное как, всё это пиршество собрать назад в инсталлятор?
Вот как раз сейчас заливаю картинки с мануала по RuPack-у
Практически все они одинаково настраиваются,25 апреля 2011 - 14:02 / #8 -
25 апреля 2011 - 14:08 / #9
-
Оффлайн
Автор темы
Звание: Легенда
Админ
Сообщений: 2199
Создано тем: 317
Рейтинг: 10
Репа: (245|245|0)
Баллы: 3600
Был: 2024-12-25 21:15
Лайков: 205
Цитата: LesergЯ тут по InnoSetup чуть порыл. Можно и им делать патчи. Прикручивается к нему DLL, называется VPatch. Только в отличии от PatchWise все ручками писать надо
Вообщим, победил я патч на InnoSetup!!!
На примере проги Gold Burn я методом тыка (инфы ноль в сети) и перевода с китайского и сборка патча на NSIS собрал рабочий скрипт и все прибамбасы! А главное - я понял что и как делать...Все пропатчилось, и бэкап есть, только один минус - нет сообщений о работе патча . Чтобы узнать произошло пропатчивание или нет, надо запустить файл, но главного екзешника если не найдет, орет благим матом22 мая 2011 - 16:02 / #10