• Добро пожаловать на WYLEK.ru. Пожалуйста, войдите или зарегистрируйтесь.
 
135 гостей, 2 пользователей

avatar_WYLEK

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

Автор WYLEK, 17 апреля 2011, 17:14:17

« предыдущая - следующая »

WYLEKАвтор темы

Тема создана 17 апреля 2011, 17:14:17 Последнее редактирование: 04 августа 2018, 22:05:10 от WYLEK

Поделюсь своими наработками для 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 := 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, и собирать ей тоже. Для начала, я думаю, хватит. Обсуждаем и не стесняемся все вместе. Все знают только идиоты или гении, а мы нормальные люди и должны учиться друг у друга.

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

Войдите на сайт для перехода по ссылке

Leserg

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

WYLEKАвтор темы

Ответ #2 : 17 апреля 2011, 21:35:14 #2 Последнее редактирование: 04 августа 2018, 22:06:15 от WYLEK
Цитата: Lesergу меня в браузере некоторые его строки, которые начинаются на //, отображается в таком виде: Л®ОЖ°лѕ¶Ј¬»бБоµЅЛ®ОЖїґЖрАґ·¶О§ёь№гЎЈ

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

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

Но это само собой. Так в моем примере нет русских имен. А файл wylek.iss открывать нужно прогой ISTool

Leserg

Ответ #3 : 17 апреля 2011, 22:30:10 #3 Последнее редактирование: 04 августа 2018, 22:06:47 от WYLEK
Цитата: WYLEKТак в моем примере нет русских имен.
Да, нету. Но вот архив назван по русски - форум.rar. Ну ничего страшного, все в порядке.
Кто ищет, тот всегда найдет!

Leserg

Ответ #4 : 19 апреля 2011, 01:05:42 #4
Я тут по InnoSetup чуть порыл. Можно и им делать патчи. Прикручивается к нему DLL, называется VPatch. Только в отличии от PatchWise все ручками писать надо .
Кто ищет, тот всегда найдет!

WYLEKАвтор темы

Ответ #5 : 19 апреля 2011, 08:59:54 #5 Последнее редактирование: 04 августа 2018, 22:07:17 от WYLEK
Цитата: LesergЯ тут по InnoSetup чуть порыл. Можно и им делать патчи. Прикручивается к нему DLL, называется VPatch. Только в отличии от PatchWise все ручками писать надо

Да видел я это, и переделанные на русский язык скрипты(описание) есть у меня. Но живых примеров ноль...
Видать не ахти как работает.

Stalevar

Ответ #6 : 25 апреля 2011, 12:35:43 #6
Геннадий такой вопрос.
Я распаковал экзешник UniExtract, появилось куево множество папок, я заменил в папках нужные мне файлы, чем и главное как, всё это пиршество собрать назад в инсталлятор?
Храни меня Господь от тех, кому я верю. Кому не верю - тех остерегусь я сам.

WYLEKАвтор темы

Ответ #7 : 25 апреля 2011, 14:02:24 #7 Последнее редактирование: 04 августа 2018, 22:07:43 от WYLEK
Цитата: StalevarГеннадий такой вопрос.
Я распаковал экзешник UniExtract, появилось куево множество папок, я заменил в папках нужные мне файлы, чем и главное как, всё это пиршество собрать назад в инсталлятор?

Вот как раз сейчас заливаю картинки с мануала по RuPack-у
Практически все они одинаково настраиваются,

Stalevar

Ответ #8 : 25 апреля 2011, 14:08:24 #8
Ждёмс!!!
Храни меня Господь от тех, кому я верю. Кому не верю - тех остерегусь я сам.

WYLEKАвтор темы

Ответ #9 : 22 мая 2011, 16:02:20 #9 Последнее редактирование: 04 августа 2018, 22:08:57 от WYLEK
Цитата: LesergЯ тут по InnoSetup чуть порыл. Можно и им делать патчи. Прикручивается к нему DLL, называется VPatch. Только в отличии от PatchWise все ручками писать надо


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

Alexander2012

Ответ #10 : 16 января 2012, 18:24:06 #10
Пожалуйста перезалейте файл) И хотел спросить, как можно осуществить в инстолляторе автоматическое регистрировании программы ну на примере AutoPlay Media Studio?

WYLEKАвтор темы

Ответ #11 : 17 января 2012, 19:35:26 #11 Последнее редактирование: 04 августа 2018, 22:09:33 от WYLEK
Цитата: Alexander2012как можно осуществить в инстолляторе автоматическое регистрировании программы ну на примере AutoPlay Media Studio?

Вот так...



[Files]Source: SisDirPTxSCP.ocx; DestDir: {sys}; Flags: regserver


и библиотека PTxSCP.ocx

Gnom

Ответ #12 : 18 января 2012, 10:27:46 #12 Последнее редактирование: 04 августа 2018, 22:10:01 от WYLEK
Цитата: Alexander2012Вот так...
У каждой программы свой способ регистрации в системе. одни с помощью служебных библиотек, другие - ini-файлов, основная масса - через реестр. на примере - этого не покажешь. Идеальный вариант - берешь виртуальную машину, ставишь начисто систему, и с помощью, например, регшота, делаешь слепок состояний системы до и после установки программы. после чего этот слепок анализируешь и экспериментируешь с регистрацией проги в системе на базе этого слепка. На чистой системе, поскольку пачка работающих программ вносят свои изменения в систему непрерывно, и легко можно упереться влево.

Alexander2012

Ответ #13 : 18 января 2012, 20:32:06 #13
WYLEK, Можно поподробнее что за библеотека и где её можно скачать?

Gnom

Ответ #14 : 19 января 2012, 11:24:26 #14
Она является частью программы, и необходима именно для AutoPlay Media Studio. Устанавливаешь AutoPlay Media Studio и она будет в папке:
твой системный диск\windows\sistem32

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

    TinyPortal

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

    Simple Machines

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

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