Пишемо інсталятор аддонів

пишемо

Для початку кілька слів, для чого це, власне, потрібне. Зазвичай моди розповсюджують в архівах, це загальноприйнятий спосіб, який, на жаль, не позбавлений недоліків, основні з яких:

- для розпакування потрібно знати, куди розпаковувати (якщо зі звичайними модами достатньо знайти папку Downloads і розпакувати в неї, то з глобальними модами чи хаками такий спосіб не завжди проходить, до того ж при перекритті об'єктів вони починають позначатися як модифіковані («зірочкою») у грі та бодішопі);

- для розпакування потрібен архіватор, звичайно, не дуже сильний аргумент у країні, де софт ділиться на ліцензійний і решту, але все-таки;

- архів розпаковується цілком, тобто. як правило, неможливо вибрати, що конкретно встановлюється.

Нам знадобиться NSIS і блокнот (або щось сучасніше, типу Notepad++. Чому обраний NSIS? Тому, що він гнучкий, з широкими скриптовими можливостями та високоефективним архіватором, і нарешті просто мені подобається.

1. Завантажте та встановіть NSIS;

2. Скачайте заголовні файли;

3. Створіть папку в якій буде розміщуватися ваш проект і розпакуйте файли в неї, всього 4 файли та папка з прикладом:

- setup.nsi – заготівля для сценарію установки, у цьому файлі ми писатимемо скрипт;

- ar_sims.nsh - заголовний файл з базовим скриптом інсталятора, його чіпатине потрібно ;

- ar_sims_consts.nsh – заголовний файл із константами;

- list.txt – файл зі списком аддонів у пакеті (типу readme), файл має називатися list, але може мати розширення;

буде

Тепер відредагуйте значення AR_NAME, AR_INST_NAME та AR_INST_VER.

Увага! Значення AR_NAME має бути унікальним і не містити пробілів – це значеннявикористовується як частина імен інсталятора та гілки у реєстрі.

аддонів

Рядок 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. Якщо все зроблено правильно, то в папці проекту буде створено файл з ім'ям Setup.exe, де замість цього буде підставлено її значення;

10. Тепер можна випробувати те, що вийшло, запустіть:

пишемо

Після натискання на кнопку "Встановити":

- у папці Downloads буде створено підпапку з ім'ям, якщо папка існує, то всі файли з неї будуть видалені (потрібно для коректного оновлення версій);

- у неї скопійовані файли list.txt та ar_wall.package;

- у реєстрі створено запис усекції “Uninstall” для “Установки та видалення програм” Windows;

- у папці оригіналом гри The Sims створений аніссталлер з ім'ям Un_.exe;

11. Якщо все запрацювало, то продовжимо. Зайдіть в "Встановлення та видалення програм" Windows, знайдіть ваш пакет (називатися від буде за значенням і видаліть його;

12. Зайдіть тепер у папку examples і перейменуйте файл ar_wall.package в _wall.package, де значення, яке ви йому дали;

13. Відкрийте файл setup.nsi та відредагуйте його:

буде

14. Скомпілюйте як написано в п.7 і запустіть; установник працює подібно до попереднього прикладу, але копіює файл _wall.package не в Downloads, а в TSDataResCatalogBins;

15. Переконавшись, що все працює, видаліть пакет.

От, в принципі, і все, цього достатньо, щоб написати інсталятор для більшості модів. Насамкінець кілька зауважень:

- всі команди пишуться з нового рядка;

- кількість секцій Section ... SectionEnd практично не обмежена; секція MUI_FUNCTION_DECRIPTION_BEGIN…MUI_FUNCTION_DECRIPTION_END має бути одна;

- імена описів секцій (Sec_Kir у прикладі) мають бути унікальними для кожної секції;

- якщо після слова Section перед її назвою поставити “/o” (без лапок), то “галка” у відповідному чек-боксі буде знята;

- кількість команд !insertmacro і File всередині секції не обмежена, першою командою в секції має бути !insertmacro, щоб не виникло ситуації коли файли копіюються незрозуміло куди;

- у команді !insertmacro для вказівки шляху копіювання можна використовувати:

- SavesDl - підпапка папки Downloads;

- останній аддон задається у параметрі AR_LEP файлу ar_sims_consts.nsh

відповідною йому гілкою реєстру;

- оскільки код дляавтоматичного видалення модів генерується автоматично, існує обмеження на імена файлів, що копіюються в підпапки TSData: файли повинні починатися з або z_, зроблено це тому, що інакше буде неможливо відрізнити їх від файлів гри та файлів інших пакетів;

- файли, що копіюються в Downloads, можуть називатися довільно;

- при копіюванні файлів папки у яких вони лежать (example у прикладі) не копіюються, щоб скопіювати і папки теж поставте “/r” після команди File

перед ім'ям файлу;

- пакети створені з використанням даного файлу заголовка автоматично створюються в режимі Solid LZMA і за ступенем стиснення перевершують архіви zip і rar;