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

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 - каталог ресурсов интернет Яндекс.Метрика