Translate into English
+ Расширенный поиск
  • Пользователи
  • Правила форума
  • Регистрация
  • Сайт
К странице...
  • Вступай в группу Гиды по форуму (подробнее)
  • Все новости форума можно узнать из нашего паблика в ВК
  • Еженедельные обновления на форуме можно узнать здесь
Вернуться   Prosims: новости, обзоры, дополнения, файлы, коды, объекты, скины и скриншоты The Sims 3 и The Sims 2 — Симы форева ;) > The Sims 2: игра и дополнения > Уроки и инструкции > Уроки хакерского мастерства
Перезагрузить страницу Пишем инсталлятор модов
Уроки хакерского мастерства Let's hack it! ;)

 
  Опции темы Опции просмотра
Предыдущее Предыдущее сообщение   Следующее сообщение Следующее
Старый 04.11.2008, 23:29   #1
Мальчег AnriRS меню пользователя AnriRS
активист

 Аватар для AnriRS
 
Репутация: 2422  
Сообщений: 1,102
По умолчанию Пишем инсталлятор модов

Для начала пару слов, для чего это собственно нужно. Обычно моды распространяют в архивах, это общепринятый способ, который, к сожалению, не лишен недостатков, основные из которых:
- для распаковки нужно знать, куда распаковывать (если с обычными модами достаточно найти папку Downloads и распаковать в нее, то с глобальными модами или хаками такой способ не всегда проходит, к тому же при перекрытии объектов они начинают обозначаться как модифицированные («звездочкой») в игре и бодишопе);
- для распаковки нужен архиватор, конечно, не очень сильный аргумент в стране, где софт делится на лицензионный и весь остальной, но все же;
- архив распаковывается целиком, т.е. как правило, невозможно выбрать, что конкретно устанавливается.

Любой инсталляционный пакет состоит из данных (файлов) которые будут куда-нибудь установлены и установочного скрипта (сценария установки).
Нам понадобится NSIS и блокнот (или что-нибудь посовременнее, типа Notepad++. Почему выбран NSIS? Потому, что он гибкий, с широкими скриптовыми возможностями и высокоэффективным архиватором, и наконец, просто мне нравится. Блокнот или любой текстовый редактор нам понадобится, потому что скрипт пишется вручную. К счастью NSIS поддерживает включаемые файлы и, поэтому, весь скрипт нам писать не придется.

Итак начнем:
1. Скачайте и установите NSIS;
2. Скачайте заголовочные файлы;
3. Создайте папку в которой будет размещаться ваш проект и распакуйте файлы в нее, всего 4 файла и папка с примером:
- setup.nsi – заготовка для сценария установки, в этом файле мы будем писать скрипт;
- ar_sims.nsh – заголовочный файл с базовым скриптом инсталлятора, его трогать не нужно;
- ar_sims_consts.nsh – заголовочный файл с константами;
- list.txt – файл со списком аддонов в пакете (типа readme), файл должен называться list, но может иметь любое расширение;
4. Откройте в редакторе файл ar_sims_consts.nsh:

Теперь отредактируйте значения AR_NAME, AR_INST_NAME и AR_INST_VER. Внимание! Значение AR_NAME должно быть уникальным и не содержать пробелов – это значение используется как часть имен инсталлятора и ветки в реестре;
5. Теперь откройте в редакторе setup.nsi:

Как видите он практически пустой за исключением нескольких строк (дальше при ссылках на строку буду указывать ее номер отображаемый слева (там пока 1, 2, 3, …, 9):
Строка 1 – подключаем файл с базовым скриптом;
Строка 3 – вставляем макрос с базовым скриптом;
Строки 7 и 9 – задаем начало и конец описаний секций;
6. Теперь отредактируйте файл setup.nsi:

Строки 5 и 8 – задаем начало и конец секции, каждая такая секция при компиляции скрипта преобразуется в одну строчку с чек-боксом на экране выбора устанавливаемых пакетов, у команды Section может быть до один или два параметра: первый – имя секции, второй – ее описание, которое сейчас задается в строке 11;
Строка 6 – указываем, что распаковывать нужно в {Мои документы}\EAGames\Sims 2\Downloads;
Строка 7 – указываем, что копировать нужно файл ar_wall.package, лежащий в папке example. Папку example мы используем для удобства, чтобы не сваливать файлы проекта в кучу, таких папок можно создать сколько нужно и назвать их как удобно. Главное удобство, при их использовании, что можно не перечислять файлы поименно, а использовать стандартный символ замены “*”, например File “example\*.*” скопирует все файлы из папки example;
7. Сохраните результаты;
8. В проводнике Windows, нажмите на файле setup.nsi правой кнопкой и выберите Compile NSIS Script;
9. Если все сделано правильно, то в папке проекта будет создан файл с именем {AR_NAME} Setup.exe, где вместо {AR_NAME} будет подставлено ее значение
10. Теперь можно испытать, то что получилось, запустите:

После нажатия на кнопку “Установить”:
- в папке Downloads будет создана подпапка с именем {AR_NAME}, если папка существует, то все файлы из нее будут удалены (нужно для корректного обновления версий);
- в нее скопированы файлы list.txt и ar_wall.package;
- в реестре создана запись в секции “Uninstall” для “Установки и удаления программ” Windows;
- в папке оригиналом игры The Sims создан анинсталлер с именем Un_{AR_NAME}.exe;
11. Если все заработало, то продолжим. Зайдите в “Установку и удаление программ” Windows, найдите ваш пакет (называться от будет по значению {AR_INST_NAME} и удалите его;

12. Зайдите теперь в папку examples и переименуйте файл ar_wall.package в {AR_NAME}_wall.package, где {AR_NAME} то значение которое вы ему дали;
13. Откройте файл setup.nsi и отредактируйте его:

14. Скомпилируйте как написано в п.8 и запустите; установщик работает подобно предыдущему примеру, но копирует файл {AR_NAME}_wall.package не в Downloads, а в {Sims 2}\TSData\Res\Catalog\Bins;
15. Убедившись что все работает, удалите пакет.

Вот, в принципе, и все, этого достаточно, чтобы написать инсталлятор для большинства модов. Напоследок несколько замечаний:
- все команды пишутся с новой строки;
- количество секций Section…SectionEnd практически не ограничено; секция MUI_FUNCTION_DECRIPTION_BEGIN…MUI_FUNCTION_DECRIPT ION_END должна быть одна;
- имена описаний секций (Sec_Kir в примере) должны быть уникальными для каждой секции;
- если после слова Section перед ее названием поставить “/o” (без кавычек), то “галка”, в соответствующем чек-боксе будет снята;
- количество команд !insertmacro и File внутри секции не ограничено, первой командой в секции должна быть !insertmacro, чтобы не возникло ситуации когда файлы копируются непонятно куда;
- в команде !insertmacro для указания пути копирования можно использовать:
- SavesDl – подпапка папки Downloads;
- EP0Bins – {Sims2}\TSData\Res\Catalog\Bins;
- EP0Skins – {Sims2}\TSData\Res\Catalog\Skins;
- EP0Over – {Sims2}\TSData\Res\Overrides;
- LEPBins – {Последний аддон}\TSData\Res\Catalog\Bins;
- LEPSkins – {Последний аддон}\TSData\Res\Catalog\Skins;
- LEPOver – {Последний аддон}\TSData\Res\Overrides;
- последний аддон задается в параметре AR_LEP файла ar_sims_consts.nsh соответствующей ему веткой реестра;
- поскольку код для автоматического удаления модов генерируется автоматически, существует ограничение на имена файлов, копируемых в подпапки TSData: файлы должны начинаться с {AR_NAME} или z_{AR_NAME}, сделано это потому, что иначе будет невозможно отличить их от файлов игры и файлов других пакетов;
- файлы копируемые в Downloads могут называться произвольно;
- при копировании файлов папки в которых они лежат (example в примере) не копируются, для того чтобы скопировать и папки тоже поставьте “/r” после команды File перед именем файла;
- пакеты созданные с использованием данного заголовочного файла автоматически создаются в режиме Solid LZMA и по степени сжатия превосходят архивы zip и rar;
- все команды описаны в помощи на NSIS.
__________________
Белый, пушистый и злобный...


Последний раз редактировалось AnriRS, 05.11.2008 в 00:06.
AnriRS вне форума   Ответить с цитированием
AnriRS
Посмотреть профиль
Отправить личное сообщение для AnriRS
Найти ещё сообщения от AnriRS
 

« Предыдущая тема | Следующая тема »

Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Опции темы
Версия для печати Версия для печати
Отправить по электронной почте Отправить по электронной почте
Опции просмотра
Линейный вид Линейный вид
Комбинированный вид Комбинированный вид
Древовидный вид Древовидный вид
Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Обратная связь / Архив / Вверх

Часовой пояс GMT +4, время: 15:04

vBulletin® Version 3.6.12. Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
При сотрудничестве с Electronic Arts Inc.
EA Россия

Запрещено копирование и публикация любых материалов форума на другие порталы
без письменного разрешения администрации и указания ссылки на prosims.ru

Рейтинг@Mail.ru