Патч-русификатор средствами NSIS

Патч-русификатор средствами NSIS.Предлагаю вашему вниманию небольшой пример по созданию установщика языкового файла для программ от
  1. Оффлайн

    Автор темы

    Leserg

    Звание: Ветеран

    Команда сайта

    Сообщений: 920

    Создано тем: 77

    Рейтинг: 8

    Репа: (130|130|0)

    Баллы: 1531

    Был: 2024-04-12 20:03

    Лайков: 124

    Патч-русификатор средствами NSIS.




    Предлагаю вашему вниманию небольшой пример по созданию установщика языкового файла для программ от разработчика FRANZIS, а именно "BLACK WHITE projects", "COLOR projects", "HDR projects", "ANALOG projects", "FOCUS projects", "DENOISE projects" и "SHARPEN projects". Если эта серия программ продолжится, где используются общие языковые файлы, то наш русификатор подойдет и для неё. Дополнительной опцией нашего установщика мы сделаем возможность эксплуатировать эти программы в полной мере, без каких-либо ограничений. Создавать патч-русификатор будем средствами конструктора инсталляторов NSIS в комплекте с плагинами, расширяющими его возможности.
    Что нам понадобится? Во-первых, знания по скриптовому языку NSIS, без них ничего не получится. Во-вторых, конечно же сам NSIS плюс плагины (о них будет рассказано ниже). В-третьих, пути установки программ, соответственно на 32-бит и 64-бит системах. Это можно выяснить при тестовой установке. В-четвертых, конечно же готовый языковой файл, который мы хотим установить. В-пятых, определенные байты для патча исполняемых файлов, которые помогут раскрыть весь потенциал программ. Эти данные можно получить, занимаясь исследованием и анализом исполняемого кода.

    Инструменты:

    1) NSIS v3.0b3 с поддержкой 8192 символов. Можно использовать другую версию NSIS, но тогда, возможно, в код сценария нужно будет внести некоторые изменения.
    2) Плагин Linker v1.2, автор Slappy, модифицированный Flix (http://forum.oszone.net/post-2412784-1327.html). Используется для создания кликабельного брандинг текста на страницах инсталлятора (по желанию).
    3) Плагин nsisFile v1.0, автор Olivier Marcoux (http://wiz0u.free.fr/prog/nsisFile). Используется для патчинга исполняемых файлов.
    4) Плагин AdvSplash и др. из комплекта стандартной поставки NSIS.
    5) Заголовочный файл ProcessFunc.nsh (для NSIS v3.0), автор kotkovets (http://forum.oszone.net/post-2390157-1284.html). Используется для завершения запущенных процессов.
    6) Дизайнер диалогов NSIS Dialog Designer v1.4.1 (http://coolsoft.altervista.org/en/nsisdialogdesigner). Используется для создания собственных (дополнительных) страниц инсталлятора.
    7) Ваш любимый графический редактор, например, Paint.Net (http://www.getpaint.net), для создания изображения мастера установки, заставки и прочей графики.
    8) Редактор ресурсов, например, Resource Hacker или Restorator. Рекомендую использовать Resource Hacker v3.6.0.92. Новая версия (из последних) может испортить файл, проверено. Restorator хорош, но лепит везде свои метки "BOME", типа "Здесь был Вася!". В принципе, если это для вас несущественно, то можете использовать и его. Редактор нужен для модификации ресурса диалогов инсталлятора для возможности использования плагина Linker. Если не будете применять этот плагин, то и редактировать ничего не нужно.
    9) Любой текстовый редактор для создания сценария NSIS (или среда разработки HM NIS EDIT (http://hmne.sourceforge.net/), а также сопутствующих документов TXT, RTF.

    Вот, пожалуй, и всё. Если что забыли, по ходу изложения добавим.

    Алгоритм

    Прежде чем садиться за написание кода сценария, нужно сначала продумать алгоритм работы будущего инсталлятора, что он должен делать и как. Установить языковой файл — это понятно, но куда? Если бы у нас была одна программа, то все довольно просто — указал путь установки и поехали. У нас же программ несколько,.. а если у пользователя установлены не все из них, а только некоторые... Вариантов решения такой задачи может быть несколько, предлагаю вам следующий.
    Инсталляторы FRANZIS содержат обе редакции программ: 32-бит и 64-бит. Соответственно выполняется их установка: на 32-бит ОС устанавливается 32-бит версия программы, а на 64-бит ОС — 64-бит версия. Путь установки по умолчанию стандартный — программная группа файлов, папка с именем поставщика, плюс папка с именем программы. Т.е. вот так
    - на 32-бит ОС: $PROGRAMFILESFranzis{папка с именем программы}
    - на 64-бит ОС: $PROGRAMFILES64Franzis{папка с именем программы}

    Чтобы облегчить себе задачу, будем считать, что у пользователя все программы FRANZIS (или некоторые из них) установлены в каталоге по умолчанию. По этой причине наш инсталлятор не будет предлагать выбрать путь установки. Чтобы не прописывать в коде имя папки для каждой из программ (мы не знаем, какие из них установлены у пользователя), то будем определять полные пути при работе нашего патч-русификатора. Для этого воспользуемся именами исполняемых файлов программ и поручим нашему инсталлятору произвести их поиск в подкаталогах папки "Franzis". Этим мы можем убить сразу несколько зайцев. Во-первых, найдя такой файл, мы узнаем путь для установки языкового файла, Во-вторых, мы можем модифицировать его на предмет некоторых улучшений. В-третьих, если ничего не будет найдено, значит ни одна программа от FRANZIS не установлена. Возможно пользователь установил их в другим месте, но этот вариант мы рассматривать не будет. Упрощенная блок-схема алгоритма выглядит следующим образом:

    Рисунок 1



    Продолжение следует...
    Сообщение отредактировал 3 августа 2018 - 23:35

    Кто ищет, тот всегда найдет!

    25 февраля 2016 - 17:11 / #1
  2. Оффлайн

    Автор темы

    Leserg

    Звание: Ветеран

    Команда сайта

    Сообщений: 920

    Создано тем: 77

    Рейтинг: 8

    Репа: (130|130|0)

    Баллы: 1531

    Был: 2024-04-12 20:03

    Лайков: 124

    Продолжение

    Сценарий

    Ниже приведен полный текст сценария с подробными комментариями. Если вам какие-то команды не понятны, обратитесь к справочной документации NSIS.


    Продолжение следует...
    Сообщение отредактировал 25 января 2023 - 16:11

    Кто ищет, тот всегда найдет!

    25 февраля 2016 - 17:15 / #2
  3. Оффлайн

    Автор темы

    Leserg

    Звание: Ветеран

    Команда сайта

    Сообщений: 920

    Создано тем: 77

    Рейтинг: 8

    Репа: (130|130|0)

    Баллы: 1531

    Был: 2024-04-12 20:03

    Лайков: 124

    Продолжение

    Пояснения

    Инсталлятор показывает пользователю заставку и проигрывает звуковой файл. За эти функции отвечает плагин AdvSplash. После заставки отображается страница приветствия.

    Рисунок 2


    Это дополнительная страничка и для её создания был использован редактор NSIS Dialog Designer (файл странички welcome.nsdinc).

    Далее идет страница для отображения текста лицензионного соглашения. Страница стандартная и не имеет каких-либо особенностей.


    Рисунок 3


    Наконец, завершающая страница — установка русификатора и применение патча.

    Рисунок 4


    Для интерфейса инсталлятора выбран тип sdbarker_tiny: небольшой размер диалогов, минималистский дизайн. При этом файл с ресурсами интерфейса был модифицирован для применения плагина Linker. Для этого откройте файл sdbarker_tiny.exe (находится в каталоге NSIS по пути ..ContribUIs) в редакторе ресурсов, перейдите на диалог с ID 105 и в тексте формы найдите элемент управления 1028. По умолчанию этот элемент не активный и недоступен для перехвата фокуса. Чтобы сделать его активным и доступным для кликом мышкой, необходимо удалить флаг WS_DISABLED.

    Рисунок 5


    У вас должно получиться вот так:

    Рисунок 6


    Нажмите "Compile Script" и сохраните файл под новым именем — sdbarker_tiny_modl.exe. Готово.

    Для локализации строк интерфейса и сообщений инсталлятора патч-русификатора используется модифицированный языковой файл Russian.nlf (находится в каталоге NSIS по пути ..ContribLanguage files). В нём слово "Установка" заменено на "Русификация" и сделаны ещё незначительные правки. Файл сохранён под именем Russian_rus.nlf и используется в сценарии.
    Поиск исполняемых файлов программ выполняется по маске *projects*.exe. Часть имени "projects" является общей у всех файлов для всей линейки продуктов FRANZIS. Других исполняемых файлов с такой частью имени в каталогах установки нет, поэтому будут найдены именно те файлы, которые нам нужны. В функции FindFilesEXE найденные полные пути к исполняемым файлам сохраняются в одну переменную $R0, которая выполняет функцию мнимого одномерного массива. Данные в нём записываются в формате /{индекс}={полный_путьимя_файла}. Этот способ временного хранения данных предложил пользователь K.A.V. на форуме скачать[/size][/color]
    Сообщение отредактировал 2 марта 2019 - 14:39

    Кто ищет, тот всегда найдет!

    25 февраля 2016 - 17:17 / #3
  4. Оффлайн

    Metabolic

    Звание: Прибывший

    Участники

    Сообщений: 14

    Создано тем: 0

    Рейтинг: 1

    Репа: 0

    Баллы: 51

    Был: 2023-12-04 17:04

    Restorator хорош, но лепит везде свои метки "BOME", типа "Здесь был Вася!"

    Чтоб программа не метила модифицированные ресурсы, необходимо отключить в настройках функцию:
    "Основные настройки -> Сохранение файлов -> Создавать метки на измененных ресурсах [стрелочка]"
    Сообщение отредактировал 3 августа 2018 - 23:50
    26 февраля 2016 - 22:51 / #4
  5. Оффлайн

    Автор темы

    Leserg

    Звание: Ветеран

    Команда сайта

    Сообщений: 920

    Создано тем: 77

    Рейтинг: 8

    Репа: (130|130|0)

    Баллы: 1531

    Был: 2024-04-12 20:03

    Лайков: 124

    Тю, блин, действительно. Верное замечание, спасибо.
    Кто же знал, что визуальная метка изменённого ресурса привязана к "BOME". Фиг догадаешься.
    Сообщение отредактировал 3 августа 2018 - 23:51

    Кто ищет, тот всегда найдет!

    27 февраля 2016 - 01:33 / #5
  6. Оффлайн

    AlexSergeev

    Звание: Бывалый

    Проверенные

    Сообщений: 172

    Создано тем: 0

    Рейтинг: 4

    Репа: (1|1|0)

    Баллы: 51

    Был: 2023-11-18 13:24

    Лайков: 1

    Цитата: Metabolic
    Чтоб программа не метила модифицированные ресурсы, необходимо отключить в настройках функцию:"Основные настройки -> Сохранение файлов -> Создавать метки на измененных ресурсах [стрелочка]"


    Осмелюсь спросить — отключить в настройках СИСТЕМЫ? Тогда конкретно где и как? Или при установке патча-русификатора — в его настройках?
    С уважением
    Сообщение отредактировал 3 августа 2018 - 23:51
    1 октября 2016 - 16:31 / #6
  7. Оффлайн

    WYLEK

    Звание: Легенда

    Админ

    Сообщений: 2178

    Создано тем: 315

    Рейтинг: 10

    Репа: (245|245|0)

    Баллы: 3400

    Был: 2024-04-08 16:00

    Лайков: 196

    Цитата: AlexSergeev
    отключить в настройках СИСТЕМЫ? Тогда конкретно где и как? Или при установке патча-русификатора — в его настройках?



    В настройках Restorator

    Сообщение отредактировал 2 марта 2019 - 14:40

    1 октября 2016 - 17:11 / #7

Статистика форума, пользователей онлайн: 0 (за последние 20 минут)

---
Создано тем
1173
Всего сообщений
15311
Пользователей
17846
Новый участник
ZAZ968Alex