Войти
  1. ВКонтакте
  2. Facebook
  1. »
  2. »
  3. »
  4. Скрипт русификатора
Скрыть панель справаПоказать панель справа

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

Старожил
  1. Офлайн
  2. Админ
  3. 518 сообщений
  4. Сообщение
  5. Личные данные
Полезность: 0 | сообщение № 1 отправлено 17:32, 31.01.2014
Предоставляю вам рабочий скрипт для , на мой взгляд, самого лучшего установщика 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 10:44, 30.08.2017

------------------------------------------
Старожил
  1. Офлайн
  2. Админ
  3. 518 сообщений
  4. Сообщение
  5. Личные данные
Полезность: 0 | сообщение № 2 отправлено 18:30, 31.01.2014
Цитата Kopejkin ()
Я бы скачал, но он где-то за облаками спрятался...


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


------------------------------------------
Знаток
  1. Офлайн
  2. Команда сайта.
  3. 312 сообщений
  4. Сообщение
  5. Личные данные
Полезность: 0 | сообщение № 3 отправлено 21:00, 31.01.2014
Я как мужика с молотком на главной увидел и надпись "Универсальный скрипт русификатора...", то грешным делом подумал ,что ты предлагаешь таким макаром русики устанавливать. biggrin Порадовал.
Статья отличная. Но думаю, что нужен некоторый опыт работы с этим инсталлятором, чтобы во всем этом разобраться. Начинающие утонут. Как пожелание, пронумеруй картинки, тогда в описании легче будет делать отсылку (см. рис. 2).


------------------------------------------
Кто ищет, тот всегда найдет!
Старожил
  1. Офлайн
  2. Админ
  3. 518 сообщений
  4. Сообщение
  5. Личные данные
Полезность: 0 | сообщение № 4 отправлено 07:52, 01.02.2014
Цитата Leserg ()
Как пожелание, пронумеруй картинки, тогда в описании легче будет делать отсылку


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


------------------------------------------
Новичок
  1. Офлайн
  2. Мастер
  3. 39 сообщений
  4. Сообщение
  5. Личные данные
Полезность: 0 | сообщение № 5 отправлено 09:50, 02.02.2014
cool пробовал  с помощью Inno Extractor выдернуть скрипт и посмотреть, но все время фигушки  happy
Цитата WYLEK ()
предлагается замена папок - настает полный пипец.
Для этого есть простенькая программа Patch Maker  конечна она лишена многих прелестей, но патчер сделает любой юзер.
 Урок суперный, главное его теперь в свою голову запихать. Спасибо
Прибывший
  1. Офлайн
  2. Участники
  3. 4 сообщений
  4. Сообщение
  5. Личные данные
Полезность: 0 | сообщение № 6 отправлено 16:16, 02.02.2014
Leserg;10065 писал:Начинающие утонут.
Да, это так! Ещё в июне ушёл в изучение Inno Setup, так и не вышел. Сложно, но какая радость когда что то выходит! (Особенно что нибудь в секции  Код)


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

Вот так



За статью спасибо. Может что нибудь нового узнаю.

Последний раз редактировал WYLEK 11:31, 30.08.2017
Старожил
  1. Офлайн
  2. Админ
  3. 518 сообщений
  4. Сообщение
  5. Личные данные
Полезность: 0 | сообщение № 7 отправлено 18:21, 02.02.2014
Цитата BullFFm ()
Как это всё происходит, считывается запись (#define MyAppName "Тут название") и считанное записывается туда где стоит {# MyAppName}


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


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


------------------------------------------
Прибывший
  1. Офлайн
  2. Участники
  3. 4 сообщений
  4. Сообщение
  5. Личные данные
Полезность: 0 | сообщение № 8 отправлено 18:36, 02.02.2014
Цитата WYLEK ()
Нет, в секции Code прописывать только вручную.
Почему? Я делаю так как написал выше и всё работает, можете попробовать.

Я  познакомился с Inno Setup так же. Товарища Gnom'a видел на сайте и знаком с его работами но всё равно спасибо за совет.
Старожил
  1. Офлайн
  2. Админ
  3. 518 сообщений
  4. Сообщение
  5. Личные данные
Полезность: 0 | сообщение № 9 отправлено 19:46, 02.02.2014
BullFFm;10087 писал:Почему? Я делаю так как написал выше и всё работает, можете попробовать.


Для универсальности этого скрипта можно и так сделать как предлагаешь.

Спойлер [+]


Все работает.


да, переделанный скрипт вот

Спойлер [+]

Последний раз редактировал WYLEK 11:36, 30.08.2017

------------------------------------------
Охотник
  1. Офлайн
  2. Администраторы
  3. 209 сообщений
  4. Сообщение
  5. Личные данные
Полезность: 0 | сообщение № 10 отправлено 22:28, 29.01.2015
не получается прикрутить к скрипту вот это
Код
// -------------Описание: Команда 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;


------------------------------------------
\"Возможно всё! На невозможное просто требуется больше времени.\"
Мудрец из Шангри Ла
Сталкер
  1. Офлайн
  2. Журналисты
  3. 88 сообщений
  4. Сообщение
  5. Личные данные
Полезность: 0 | сообщение № 11 отправлено 16:40, 01.02.2015
gazon01, скрипт свой дай. Можно в личку.
Охотник
  1. Офлайн
  2. Администраторы
  3. 209 сообщений
  4. Сообщение
  5. Личные данные
Полезность: 0 | сообщение № 12 отправлено 20:46, 04.02.2015
WYLEK,  с защитой от распаковки разобрался, надо было к ISTask.dll дописать noencryption и всего то блин  biggrin  

вот так

 
[Files]Source: dll\ISTask.dll; DestDir: {app}; Flags: ignoreversion noencryption


------------------------------------------
\"Возможно всё! На невозможное просто требуется больше времени.\"
Мудрец из Шангри Ла
Старожил
  1. Офлайн
  2. Админ
  3. 518 сообщений
  4. Сообщение
  5. Личные данные
Полезность: 0 | сообщение № 13 отправлено 10:59, 05.02.2015
Цитата gazon01 ()
с защитой от распаковки разобрался, надо было к ISTask.dll дописать noencryption и всего то блин

Молоток biggrin но зачем это тебе надо? Утащат русифицированные файлы а не скрипт установщика.


------------------------------------------
Охотник
  1. Офлайн
  2. Администраторы
  3. 209 сообщений
  4. Сообщение
  5. Личные данные
Полезность: 0 | сообщение № 14 отправлено 10:50, 07.02.2015
Цитата WYLEK ()
Утащат русифицированные файлы а не скрипт установщика.

ну так для этого надо ещё распаковать или установить программу, ведь там проверка на MD, простому Пупкину это уже будет не интересно, да и так, просто ради прикола biggrin :D biggrin

Gnom, ответил в ЛС


------------------------------------------
\"Возможно всё! На невозможное просто требуется больше времени.\"
Мудрец из Шангри Ла
Прибывший
  1. Офлайн
  2. Участники
  3. 7 сообщений
  4. Сообщение
  5. Личные данные
Полезность: 0 | сообщение № 15 отправлено 18:03, 26.04.2016
От души !!! Благадарен Вам Уважаемый...! WYLEK


------------------------------------------
Windows XP Professional 5.1.2600.2158 SP2(x86_x64)
 
Перейти
Найти

Доступ закрыт.

  1. Вам запрещено отвечать в темах данного форума.

Последние темы

Новости с сайта

Изменения статуса

  1. Никто не менял личный статус.