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

avatar_WYLEK

Скрипт русификатора

Автор WYLEK, 31 января 2014, 21:32:47

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

WYLEKАвтор темы

Тема создана 31 января 2014, 21:32:47 Последнее редактирование: 03 августа 2018, 23:53:28 от WYLEK

Предоставляю вам рабочий скрипт для , на мой взгляд, самого лучшего установщика Inno.


Немного теории...

Для подготовленный пользователей установка русификатора не составляет проблем, мозги и руки срабатывают в унисон автоматом.
Но для начинающих пользователей установка русификатора это танцы с бубном, а если установщика нет и предлагается замена папок - настает полный пипец.
Итак, что должен уметь установщик, чтобы конечный пользователь не испытывал этих неудобств.

Что могёт этот скрипт?

1. Автоматически определяет папку установки и обновляемые файлы, если найдены, то установка продолжится, если нет, то вас оповестят об этом.
2. Проверяет вначале установки запущена ли обновляемая программа. Если выполняется, то будет предложено завершить процесс и продолжить или прекратить установку русификатора. Если пользователь продолжил установку, то все обновляемые файлы будут перемещены в папку Backup.
3. Проверяет контрольную сумму обновляемого файла. Исход обычный - или установка или пишите письма на деревню дедушке.
4. Так как русификаторы я создаю для своего сайта, то вставил фишку проверки внешнего файла на присутствие и на целостность. Исход такой же, как пунктом выше.
5. И немаловажная фишка - если по какой то причине пользователю не понравился русификатор, и он хочет вернуть все назад, то ему просто надо запустить деинсталляцию русификатора. При этом будет проверка запущена ли программа. Если выполняется, то будет предложено завершить процесс и продолжить или прекратить удаление. Если пользователь продолжил удаление, то все сохраненные файлы в папке Backup будут перемещены на их родное место.


А теперь скрипт и немного описания, я коротко на каждую функцию вставил уже туда.

На этой картинке все обычно, вставляете свои данные и всего делов то. Вверху данные Inno Setup Preprocessor.
Единственно я использую для сборок и русификаторов разные файлы языка (внизу). Этот файл в архиве.

Показать / Скрыть текст
[свернуть]

Это файлы, которые нужно вставить в программу. Все прописывается как в блокноте напрямую - пути и имена.
За выделенное напишу ниже.

Показать / Скрыть текст
[свернуть]

Это работа с реестром. Например в этой программе надо было при вставке файла-лекарства LicenseMgr.dll очистить ветку реестра перед установкой русификатора.
Зачем? Просто если уже был установлен ключ от версии EaseUS Partition Master Pro, а это лекарство для EaseUS Partition Master Technician Edition, то запустить программу вам не удастся. Нужно вручную зайти в реестр и удалить ветку. Здесь же делает это за вас установщик. Обратите внимание - для 32-бит и 64-бит разные ключи. Реализовывается это просто - на картинке где стрелка 2 для 64-бит, а где стрелка 3 для 32-бит. Стрелка 1 удаляет ветку перед установкой.

Показать / Скрыть текст
[свернуть]

Если надо прописать значения, вот пример скрипта, здесь я перенес строки чтобы влезли на картинку.

Показать / Скрыть текст
[свернуть]

Это задачи, тут вы можете прописывать что угодно. Установлены радиокнопки одного действия. Только один выбор - или одно или другое.
Задача doktor подключает файл LicenseMgr.dll в работу и он заносится в папку с программой. Ну а если выбрали другое, то установка происходит без лекарства.

Показать / Скрыть текст
[свернуть]

Вот мы и подобрались к самому интересному. Это код бэкапа, он работает вместе с файлами - нужно прописать BeforeInstall: CreateBackup для каждого заменяемого файла.
Смотрите второй рисунок сверху где раздел Files. Все бэкапится в папку Backup. Для работы этого кода нужен скрипт SHFileOperation.iss. Положил в архив.

Показать / Скрыть текст
[свернуть]

Это проверка проверка MD5 ехе-файла, стрелки указывают что нужно заменить для своих целей.

Показать / Скрыть текст
[свернуть]

Это проверка проверка MD5 внешнего файла, стрелки указывают что нужно заменить для своих целей.
Этот файл должен всегда быть рядом с установщиком. При любых действиях с ним русификатор не установится.
Вы можете прицепить любой файл.

Показать / Скрыть текст
[свернуть]

Это проверка на присутствие определенных файлов в папке с установленной программой, стрелки указывают что нужно заменить для своих целей.

Показать / Скрыть текст
[свернуть]

Это проверка на присутствие файла рядом с установщиком. Если его нет рядом с ним то русификатор не установится.

Показать / Скрыть текст
[свернуть]

Это проверяется запущена ли программа при удалении русификатора, стрелки указывают что нужно заменить для своих целей.

Показать / Скрыть текст
[свернуть]

Это проверяется запущена ли программа при установке русификатора, стрелки указывают что нужно заменить для своих целей.

Показать / Скрыть текст
[свернуть]


Но вот в принципе и вся сказка...
Еще раз напоминаю - не переносите строки в рабочем скрипте как на картинках - это я сделал чтобы уменьшить их размер.


Качаем архив...

Показать / Скрыть текст
Архив
[свернуть]

WYLEKАвтор темы

Ответ #1 : 31 января 2014, 22:30:54 #1 Последнее редактирование: 03 августа 2018, 23:54:45 от WYLEK
Цитата: KopejkinЯ бы скачал, но он где-то за облаками спрятался...

 Залил на другое облако

Leserg

Ответ #2 : 01 февраля 2014, 01:00:28 #2
Я как мужика с молотком на главной увидел и надпись "Универсальный скрипт русификатора...", то грешным делом подумал ,что ты предлагаешь таким макаром русики устанавливать. Порадовал.
Статья отличная. Но думаю, что нужен некоторый опыт работы с этим инсталлятором, чтобы во всем этом разобраться. Начинающие утонут. Как пожелание, пронумеруй картинки, тогда в описании легче будет делать отсылку (см. рис. 2).
Кто ищет, тот всегда найдет!

WYLEKАвтор темы

Ответ #3 : 01 февраля 2014, 11:52:55 #3 Последнее редактирование: 03 августа 2018, 23:55:26 от WYLEK
Цитата: LesergКак пожелание, пронумеруй картинки, тогда в описании легче будет делать отсылку

Да, упустил это. Но для начинающих делать нечего - это для подготовленных пользователей.
Кстати, не все вручную надо прописывать - в настройках кроме кода можно установкой гальки прописать

pp0312

Ответ #4 : 02 февраля 2014, 13:50:32 #4 Последнее редактирование: 03 августа 2018, 23:56:17 от WYLEK
пробовал  с помощью Inno Extractor выдернуть скрипт и посмотреть, но все время фигушки 
Цитата: WYLEKпредлагается замена папок - настает полный пипец.
Для этого есть простенькая программа Patch Maker  конечна она лишена многих прелестей, но патчер сделает любой юзер.
Урок суперный, главное его теперь в свою голову запихать. Спасибо

BullFFm

Ответ #5 : 02 февраля 2014, 20:16:18 #5 Последнее редактирование: 03 августа 2018, 23:58:15 от WYLEK
Цитата: LesergНачинающие утонут.
Да, это так! Ещё в июне ушёл в изучение Inno Setup, так и не вышел. Сложно, но какая радость когда что то выходит! (Особенно что нибудь в секции  Код)

WYLEK, я бы на вашем месте сделал так. Меньше изменять под новый русификатор.

Показать / Скрыть текст
[свернуть]

За статью спасибо. Может что нибудь нового узнаю.
Всё сложно снять, что грамотно одето!..

WYLEKАвтор темы

Ответ #6 : 02 февраля 2014, 22:21:31 #6 Последнее редактирование: 03 августа 2018, 23:58:59 от WYLEK
Цитата: BullFFmКак это всё происходит, считывается запись (#define MyAppName "Тут название") и считанное записывается туда где стоит {# MyAppName}

Нет, в секции Code прописывать только вручную.


Мое первое знакомство с Inno Setup было ровно 1 минута...
Больше года и не подходил к этому установщику, а теперь я и не помню сколько лет другого мне и не надо.
У нас на сайте есть Мастер кода Gnom, так что если есть проблемы - пишите, я думаю он поможет.

BullFFm

Ответ #7 : 02 февраля 2014, 22:36:56 #7 Последнее редактирование: 03 августа 2018, 23:59:44 от WYLEK
Цитата: WYLEKНет, в секции Code прописывать только вручную.
Почему? Я делаю так как написал выше и всё работает, можете попробовать.

 
Я  познакомился с Inno Setup так же. Товарища Gnom"a видел на сайте и знаком с его работами но всё равно спасибо за совет.
Всё сложно снять, что грамотно одето!..

gazon01

Ответ #8 : 30 января 2015, 01:28:26 #8 Последнее редактирование: 04 августа 2018, 00:01:57 от WYLEK
не получается прикрутить к скрипту вот это
// -------------Описание: Команда WYLEK.RU--------------------------------------
var
MouseLabel,SiteLabel: TLabel;
procedure SiteLabelOnClick(Sender: TObject);
var
ErrorCode: Integer;
begin
ShellExec('open', 'http://www.wylek.ru', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode)
end;
procedure SiteLabelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
SiteLabel.Font.Color:=clRed
end;
procedure SiteLabelMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
SiteLabel.Font.Color:=clBlue
end;
procedure SiteLabelMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
SiteLabel.Font.Color:=clGreen
end;
procedure SiteLabelMouseMove2(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
SiteLabel.Font.Color:=clBlue
end;
procedure InitializeWizard8();
begin
MouseLabel:=TLabel.Create(WizardForm)
MouseLabel.Width:=WizardForm.Width
MouseLabel.Height:=WizardForm.Height
MouseLabel.Autosize:=False
MouseLabel.Transparent:=True
MouseLabel.OnMouseMove:=@SiteLabelMouseMove2
MouseLabel.Parent:=WizardForm
SiteLabel:=TLabel.Create(WizardForm)
SiteLabel.Left:=10
SiteLabel.Top:=320
SiteLabel.Cursor:=crHand
SiteLabel.Font.Color:=clBlue
SiteLabel.Caption:='Сайт русификации'
SiteLabel.OnClick:=@SiteLabelOnClick
SiteLabel.OnMouseDown:=@SiteLabelMouseDown
SiteLabel.OnMouseUp:=@SiteLabelMouseUp
SiteLabel.OnMouseMove:=@SiteLabelMouseMove
SiteLabel.Parent:=WizardForm
end;
procedure HideInstallPath();
begin
WizardForm.FileNameLabel.Visible := False;
end;
//*******//
procedure ShowInstallPath();
begin
WizardForm.FileNameLabel.Visible := True;
end;
Возможно всё! На невозможное просто требуется больше времени.
 Мудрец из Шангри Ла

Gnom

Ответ #9 : 01 февраля 2015, 19:40:23 #9
gazon01, скрипт свой дай. Можно в личку.

gazon01

Ответ #10 : 04 февраля 2015, 23:46:23 #10 Последнее редактирование: 04 августа 2018, 00:02:51 от WYLEK
WYLEK,  с защитой от распаковки разобрался, надо было к ISTask.dll дописать noencryption и всего то блин   

 вот так

  
 [Files]Source: dllISTask.dll; DestDir: {app}; Flags: ignoreversion noencryption
Возможно всё! На невозможное просто требуется больше времени.
 Мудрец из Шангри Ла

WYLEKАвтор темы

Ответ #11 : 05 февраля 2015, 13:59:50 #11 Последнее редактирование: 04 августа 2018, 00:04:05 от WYLEK
Цитата: gazon01с защитой от распаковки разобрался, надо было к ISTask.dll дописать noencryption и всего то блин
Молоток но зачем это тебе надо? Утащат русифицированные файлы а не скрипт установщика.

gazon01

Ответ #12 : 07 февраля 2015, 13:50:09 #12 Последнее редактирование: 04 августа 2018, 00:05:47 от WYLEK
Цитата: WYLEKУтащат русифицированные файлы а не скрипт установщика.
ну так для этого надо ещё распаковать или установить программу, ведь там проверка на MD, простому Пупкину это уже будет не интересно, да и так, просто ради прикола

Gnom, ответил в ЛС
Возможно всё! На невозможное просто требуется больше времени.
 Мудрец из Шангри Ла

viir

Ответ #13 : 26 апреля 2016, 21:03:49 #13
От души !!! Благадарен Вам Уважаемый...! WYLEK
Windows XP Professional 5.1.2600.2158 SP2(x86_x64)

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

    TinyPortal

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

    Simple Machines

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

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