Скрипт русификатора
-
Оффлайн
Автор темы
Звание: Легенда
Админ
Сообщений: 2196
Создано тем: 317
Рейтинг: 10
Репа: (245|245|0)
Баллы: 3585
Был: 2025-01-02 21:26
Лайков: 206
Предоставляю вам рабочий скрипт для , на мой взгляд, самого лучшего установщика 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 внешнего файла, стрелки указывают что нужно заменить для своих целей.
Этот файл должен всегда быть рядом с установщиком. При любых действиях с ним русификатор не установится.
Вы можете прицепить любой файл.
Это проверка на присутствие определенных файлов в папке с установленной программой, стрелки указывают что нужно заменить для своих целей.
Это проверка на присутствие файла рядом с установщиком. Если его нет рядом с ним то русификатор не установится.
Это проверяется запущена ли программа при удалении русификатора, стрелки указывают что нужно заменить для своих целей.
Это проверяется запущена ли программа при установке русификатора, стрелки указывают что нужно заменить для своих целей.
Но вот в принципе и вся сказка...
Еще раз напоминаю - не переносите строки в рабочем скрипте как на картинках - это я сделал чтобы уменьшить их размер.
Качаем архив...31 января 2014 - 21:32 / #1 -
Оффлайн
Автор темы
Звание: Легенда
Админ
Сообщений: 2196
Создано тем: 317
Рейтинг: 10
Репа: (245|245|0)
Баллы: 3585
Был: 2025-01-02 21:26
Лайков: 206
Цитата: KopejkinЯ бы скачал, но он где-то за облаками спрятался...
Залил на другое облако31 января 2014 - 22:30 / #2 -
Оффлайн
Звание: Ветеран
Команда сайта
Сообщений: 951
Создано тем: 79
Рейтинг: 8
Репа: (131|131|0)
Баллы: 1706
Был: 2025-01-16 02:58
Лайков: 174
Я как мужика с молотком на главной увидел и надпись "Универсальный скрипт русификатора...", то грешным делом подумал ,что ты предлагаешь таким макаром русики устанавливать. Порадовал.
Статья отличная. Но думаю, что нужен некоторый опыт работы с этим инсталлятором, чтобы во всем этом разобраться. Начинающие утонут. Как пожелание, пронумеруй картинки, тогда в описании легче будет делать отсылку (см. рис. 2).1 февраля 2014 - 01:00 / #3 -
Оффлайн
Автор темы
Звание: Легенда
Админ
Сообщений: 2196
Создано тем: 317
Рейтинг: 10
Репа: (245|245|0)
Баллы: 3585
Был: 2025-01-02 21:26
Лайков: 206
Цитата: LesergКак пожелание, пронумеруй картинки, тогда в описании легче будет делать отсылку
Да, упустил это. Но для начинающих делать нечего - это для подготовленных пользователей.
Кстати, не все вручную надо прописывать - в настройках кроме кода можно установкой гальки прописать1 февраля 2014 - 11:52 / #4 -
пробовал с помощью Inno Extractor выдернуть скрипт и посмотреть, но все время фигушкиЦитата: WYLEKпредлагается замена папок - настает полный пипец.
Для этого есть простенькая программа Patch Maker конечна она лишена многих прелестей, но патчер сделает любой юзер.
Урок суперный, главное его теперь в свою голову запихать. Спасибо2 февраля 2014 - 13:50 / #5 -
Цитата: LesergНачинающие утонут.
Да, это так! Ещё в июне ушёл в изучение Inno Setup, так и не вышел. Сложно, но какая радость когда что то выходит! (Особенно что нибудь в секции Код)
WYLEK, я бы на вашем месте сделал так. Меньше изменять под новый русификатор.
За статью спасибо. Может что нибудь нового узнаю.Всё сложно снять, что грамотно одето!..
2 февраля 2014 - 20:16 / #6 -
Оффлайн
Автор темы
Звание: Легенда
Админ
Сообщений: 2196
Создано тем: 317
Рейтинг: 10
Репа: (245|245|0)
Баллы: 3585
Был: 2025-01-02 21:26
Лайков: 206
Цитата: BullFFmКак это всё происходит, считывается запись (#define MyAppName "Тут название") и считанное записывается туда где стоит {# MyAppName}
Нет, в секции Code прописывать только вручную.
Мое первое знакомство с Inno Setup было ровно 1 минута...
Больше года и не подходил к этому установщику, а теперь я и не помню сколько лет другого мне и не надо.
У нас на сайте есть Мастер кода Gnom, так что если есть проблемы - пишите, я думаю он поможет.2 февраля 2014 - 22:21 / #7 -
Цитата: WYLEKНет, в секции Code прописывать только вручную.
Почему? Я делаю так как написал выше и всё работает, можете попробовать.
Я познакомился с Inno Setup так же. Товарища Gnom"a видел на сайте и знаком с его работами но всё равно спасибо за совет.Всё сложно снять, что грамотно одето!..
2 февраля 2014 - 22:36 / #8 -
Оффлайн
Звание: Ветеран
Команда
Сообщений: 1211
Создано тем: 39
Рейтинг: 8
Репа: (42|41|-1)
Баллы: 86
Был: 2018-12-02 14:30
Лайков: 18
не получается прикрутить к скрипту вот это// -------------Описание: Команда 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;
Возможно всё! На невозможное просто требуется больше времени.
Мудрец из Шангри Ла30 января 2015 - 01:28 / #9 -
gazon01, скрипт свой дай. Можно в личку.1 февраля 2015 - 19:40 / #10
Статистика форума, пользователей онлайн: 0 (за последние 20 минут)
- Создано тем
- 1205
- Всего сообщений
- 15879
- Пользователей
- 18075
- Новый участник
- dgiharev