Справка по инсталлятору модов, альфа версия

Данная программа предназначена для организации базы модов игры TES Skyrim, хотя не менее успешно применима для многих сходных целей в т. ч. в других играх. Основная идея её создания была в организации средства управления и контроля массива файлов с по возможности минимальными накладными расходами на дублировании подконтрольных файлов. Причиной её создания послужил тот факт что все популярные и известные мне мод-менеджеры для игр TES Oblivion, TES Skyrim имели отрицательное свойство двойного дублирования всех файлов модов, загруженных в такие прогораммы, что приводило к непомерному разрастанию размера игры при использовании этих программ совместно со множеством модов. А отчасти и из спортивного интереса (я не проводил анализ на наличие достойных аналогов).
Возможности программы:
Создание базы данных установленных в игру модификаций (модов) и управление состоянием этих модов (установка, удаление) через базу данных.
Режим штучной установки - допустимо устанавливать не весь мод целиком, а лишь отдельные файлы конкретных модов
Возможность динамического изменения состава и данных файлов в мода, уже занесённого в базу данных (даёт возможность контроля и учёта файлов мода при его разработке)
Автоматическое разрешение конфликтов при совпадении имён файлов из различных модов, с учётом (и без) приоритетности модов, без окончательной потери замещаемых файлов.

Конфликты:
Со всем, в т. ч. "ручной" установкой модов.
Требования:
целевая игра, целевые модификации, мозги3
Глюки:
Программа написана через жопу, так что весьма возможны, потому это и альфа версия. Хотя у афтара ещё ни разу не глючила (при правильном танце с бубном).
Предлагаю связь:
knt11@mail.ru  - для дачи исходников желающим. Можно писать и по поводу найденных глюков, но не обольщайся - разработка давно заброшена и максимум - эта инструкция пополнится списком того, чего нельзя с программой делать.
Установка:
* Закидываем MI.exe и mainconfig.cfg в какую-нибудь папку, в которой теперь будет стоять программа. Можно в корневую папку Скайрима
* Закидываем папку ModsDataBase, с шаблноном пустой базы данных, туда где теперь будет база данных. Например в Skyrim\data, чтоб далеко не ходить. Папку с базой данных при желании можно и переименовать.
* Запускаем программу.
* Прописываем в меню Конфигурация->Папки (если само не вылезет) пути к папке Skyrim\data и пути к папке с базой данных
! Пользуемся.
Удаление:
* Деинсталировать из игры все моды, если нет желания чтоб они навеки застряли в папке с игрой (сам факт удаления программы не нарушит их работы, но сделает невозможным автоматическое удаление из игры)
* Экспортировать из базы данных моды, которые есть желание сохранить
x Удалить папку с базой данных и файлы MI.exe и mainconfig.cfg

Основное окно программы


Основное окно состоит из двух частей: слева находится список модов, известных программе, справа - набор вкладок для просмотра информации о выбранном моде и управления его состоянием.
Моды в списке сортируются по приоритету, при этом моды, стоящие в списке ниже имеют более высокий приоритет, и соответственно будут перезаписывать файлы модов с более низким приоритетом.
Все моды могут иметь набор следующих состояний, отображаемых цветным значком слева от названия мода:
    - эти три значка, и следующее за ними зарезервированное слово "Uncnown" предназначены для индикации столкновений с файлами, принадлежность которых к какому-либо из модов не установлена. Цвет значка равноценен соответствующему цвету, из описанных ниже;
- Добавленный в базу данных (известный программе) мод, который на данный момент ни разу не был установлен в игру.
- Мод не установлен в игру, но был установлен ранее, а затем удалён.
- Мод установлен в игру на 100%. Все файлы мода присутствуют в папке игры.
- Мод установлен в игру на 100%, но это привело к замещению файлами мода файлов других модов. Есть факт столкновения файлов, файлы этого мода использованы как более приоритетные.
- Мод частично установлен в игру. Часть файлов мода не находится в папке с игрой, но это не вызвано какими - либо конфликтами файлов.
- Мод частично установлен в игру. Часть файлов мода конфликтует с файлами другого, более приоритетного мода.
- Мод не установлен в игру, обнаружено повреждение файлов мода. Программа не даст установить такой мод, пока повреждения не будут исправлены! (вручную)
- Мод установлен в игру, обнаружено повреждение файлов мода. Такой мод можно только удалить.

Изменение приоритета модов в списке осуществляется передвижением выбранной строки списка кнопками клавиатуры ↑ и ↓ с зажатой клавишей Ctrl.

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

Диалог удаления мода

В диалоге пункты:
Удалить из базы данных - удалит мод из базы данных и физически удалит файлы мода.
Выгрузить из базы данных - при этом появится поле ввода целевой папки для приёма файлов мода - переместит файлы мода из базы данных в целевую папку и удалит мод из базы данных.

В правой части находится набор вкладок, предоставляющих информацию:
Инфо - общие сведения о моде: Имя, число файлов в составе, занимаемый размер, описание.
Файлы - файлы, с относительными путями к ним, входящие в состав мода
Установлены - файлы мода, которые на данный момент присутствуют в папке игры
Не установлены - файлы мода, которые на данный момент отсутствуют в папке игры
Конфликты - сведения о файлах мода, конфликтующих (совпадающих именами) с другими файлами, в т. ч. файлами других модов
Повреждены - список повреждённых файлов мода. Такие файлы не прошли проверку в процессе тестирования файлов мода на целостность. Например из за того, что были "неожиданно" перезаписаны файлами мода, установленными в обход программы.



Во вкладках Установлены, Не установлены и Повреждены для файлов также можно вызывать меню правой кнопки мыши. Во всех случаях меню будет выглядеть одинаково, однако некоторые его пункты будут неактивны.
Пункты меню производят:
Установить - устанавливает выбранный файл выбранного мода в игру. При этом игнорируются приоритеты модов! т. е. файл в игру будет установлен всегда, даже если он конфликтует с файлами более приоритетных модов. Имей в виду! при этом с индикацией состояний мода и может возникнуть путаница!
Удалить - удаляет выбранный файл мода из игры.
Обновнить - повторно заносит в базу данных информацию о  файле мода, например если файл был целенаправленно изменён и теперь надо "разрешить" повреждение мода.
Добавить - Добавляет к базе мода файл. Файл при этом должен быть предварительно помещён в корректное место в базе данных программы или в папке игры.
(!)Убрать - БЕЗ ДОПОЛНИТЕЛЬНОГО ПРЕДУПРЕЖДЕНИЯ удаляет файл мода из базы данных, но сам файл не удаляется с диска!

Отдельно про меню конфликтов:

Сверху справа размещается список файлов мода, для которых существуют конфликты.
Ниже, список "Обнаружен в модах" содержит имена конфликтующих модов в порядке их приоритета перезаписи конфликтного файла. Моды ниже в списке имеют более высокий приоритет, файл последнего в списке мода реально установлен в игру.
Поле "причина" расшифровывает причину конфликта. На данный момент имеет только состояние "Совпадение имён файлов", смысл которого по моему и так ясен.
Поля "Размер", "Время" и "CRC32" на данный момент не реализованы (вообще предполагалось предоставлять данные для сравнения)

Головное меню программы:

Файл ->
Загрузить мод - вызовет диалог добавления нового мода в базу программы
Выход - закроет программу
Конфигурация ->
Папки - вызовет диалог настройки папок местоположения базы данных и игры
Режимы - вызовет диалог настройки алгоритма проверки целостности файлов мода

Диалог добавления нового мода

Верхнее поде ввода задаёт папку с файлами загружаемого мода
Следующее за ним принимает название мода, затем отображаемое затем в списке модов
флажок "Перемещать файлы при создании БД" в отмеченном состоянии указывает программе перемещать файлы мода в базу данных. При этом файлы мода исчезнут из исходной папки, но процесс загрузки мода в базу пройдёт значительно быстрее.
Поле "описание мода" предназначено для ввода пользователем описания мода.
ВНИМАНИЕ!!! в поля "описание мода" и предназначенное для названия мода НЕЛЬЗЯ! вводить конструкцию xxxxx>\n, где xxxxx - любой текст, \n - символ перевода строки (обычно вводится клавишей Enter), > - понимается буквально символ ">" (больше, треугольная скобка) без  кавычек, а также присваивать имени мода строку "Uncnown"! и символов табуляции! Эти строки и последовательности зарезервированы и их применение необратимо порушит базу данных.

Диалог "Папки"

В "Размещение игры" указывать ту папку игры, в которую должны ставится моды;
В "База данных" указывается папка, в которой будет размещаться база данных программы, включительно файлы модов, которые в данный момент не установлены в игру
"активный файл конфигурации" - показывает какой  файл конфигурации используется для хранения настроек программы.
Имей в виду!  Программа ищет файл конфигурации в текущей рабочей папке на момент своего запуска! Будь внимателен.

Диалог "Режимы"

Устанавливает алгоритм тестирования файлов на целостность:
CRC - проверка по контрольной сумме
размер - проверка на соответствие размера
время - проверка на соответствие времени последней модификации
Можно выбрать один из трёх подходов, первый - самый медленный и надёжный, последний - самый быстрый и сомнительный
Флажёк "Не тестировать" подавляет вызовы процесса автоматического тестирования файлов мода (например перед его установкой в игру) на время текущего сеанса работы программы.

Ну вот. вроде всё. Можно закрыть эту буковь.... но всё-же рекомендую почитать ещё немного....

Файл конфигурации

по умолчанию mainconfig.cfg в текущем рабочем каталоге на момент запуска программы
ver= 0 - магик. всегда должен быть именно таким!
Раздел [GENERAL]
GameDir= - указавает путь к папке игры
GameDb= - указывает путь к папке с базой данных
LastPath= - хранит путь, последний раз указанный в каком-либо диалоге выбора пути
IsExtOpMoveFiles= - перемещать ли файлы из источника при создании БД 0=Нет 1=Да
ModFilesTestLevel= - алгоритм тестирования файлов на целостность. допустимы 1 - 3.
bNoModFilesTests= - отключить тестирование файлов на целостность. 1=Отключить 0=включить
Раздел [LOGGING]
LogLevel= - задаёт уроветь подробности записываемой в лог информации. По умолчанию 1. 0=выключен
LogFile= - задаёт имя лог файла. Файл создаётся в текущей рабочей папке на момент запуска программы.
Раздел [DISPLAY]
содержит данные о положении и размерах окна программы

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

Файлы базы данных

Лежат в корне папки, выбранной под базу данных.
Состоят из файла GameDB.ini и набора файлов %имя мода%.txt.
Каждому файлу %имя мода%.txt соответствует папка с именем %имя мода%, в которой лежат файлы мода, на данный момент не установленные в игру. Папки модов, находящихся в базе данных, удалять нельзя, создавать "лишние" папки тоже крайне нежелательно.
Отдельно имеется папка Uncnown и файл Uncnown.txt, предназначенные для хранения данных о файлах, принадлежность которых неизвестна, но которые конфликтуют с файлами модов.

GameDB.ini - "это индекс" файл, содержащий общую информацию о находящихся в базе модах, а также данные о конфликтных файлах
внутри состоит из двух полей:
<ACTIVE>
</ACTIVE>
содержит список модов в БД и их состояния, отделённые символами табуляции:
пробел - не установлен
- частично установлен
+ установлен полностью
! имеются конфликты
8 спецуказатель на хранилище неизвестных файлов. Технически тут заместо "Uncnown" можно прописать любое другое слово, соответственно создав одноимённые файл и папку.
<FILES>
</FILES>
содержит список конфликтных файлов
В первой колонке - относительный путь к файлу, во второй:
"!" - признак совпадения имён (дублирование файла)
"<", "s", ">", "?" - обозначают факт обнаружения нарушения целостности базы данных для указанного файла. Какой за конкретно что отвечает уже, увы, не помню.
далее идёт список модов (по приоритетам), участвующих в конфликте

Файлы %имя мода%.txt имеют следующую структуру:
<DESCR>
</DESCR>
содердит описание мода
<FILES>
</FILES>
содержит список файлов мода
первый столбец - состояние:
- файл не установлен
+ файл установлен
? Файл утерян. Переходит с "+"
. файл утерян. Переходит с "-"
Второй столбец - путь/имя файла
Третий - размер файла (байт)
Четвёртый - контрольную сумму CRC32
Пятый, шестой - время последней модификации (в запакованном виде)