Перейти к содержимому


Фотография

[TES] [Fallout] [Other] Kortex Mod Manager

kortex kmm kortex mod manager mod manager mod manager

  • Авторизуйтесь для ответа в теме

#161 Ссылка на это сообщение Karandra

Karandra
  • Знаменитый оратор



  • 3 685 сообщений
  •    

Отправлено

Kortex Mod Manager — менеджер модов использующий виртуальную файловую систему для изоляции модов для обеспечения простого разрешения конфликтов между модами и чистой установки и удаления.
 
Поддерживаемые игры:
The Elder Scrolls III: Morrowind
The Elder Scrolls IV: Oblivion
The Elder Scrolls V: Skyrim
The Elder Scrolls V: Skyrim - Special Edition
Fallout 3
Fallout: New Vegas
Fallout 4
Sacred 2

 

Дискорд сервер: https://discord.gg/ZyzWjYj

Исходный код: https://github.com/K...tex-Mod-Manager

Веб-сайт: https://karandra.git...tex-Mod-Manager

Copyright © 2018-2020 Karandra

Запрещена загрузка программы на другие сайты без моего разрешения


pre_1454504183__logo.png Kortex Mod Manager: Discord | GitHub | Web-site


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 528

#162 Ссылка на это сообщение Karandra

Karandra
  • Знаменитый оратор



  • 3 685 сообщений
  •    

Отправлено

В OBMM много функций, я не все из них знаю. Все что программа делает у меня написано, что ещё ответить не знаю.


pre_1454504183__logo.png Kortex Mod Manager: Discord | GitHub | Web-site

#163 Ссылка на это сообщение Lord-Vadim

Lord-Vadim
  • Следопыт
  • 77 сообщений
  •    

Отправлено

Отступ можно. Можно ещё сделать какую-нибудь картинку-разделитель. Скриншоты добавлю, будут только если найдётся файл установщика.

 

Деинсталляция:

1) Файл 1 есть

2) Файл 1 --> Файл 2

3) Файл 2 --> Файл 3

4) Файл 3 удалён.

5) Файла нет.

6, 7) Файл 1 есть

8, 9) Так как имеет ту же текстуру что и мод 1, то удаляет Файл 1

9, 10) Файл 1 не существует. Не получаем ничего.

 

Вот те раз... :(

 

Этим ответом ты меня сильно опечалил...

Основная функция менеджера модов: Поддержка целостности Skyrim и корректная инсталляция/деинсталляция модов... Подумай над этим... иначе это просто красивая оболочка и все...

Копии заменяемых файлов ОБЯЗАТЕЛЬНО надо сохранять!!!

Алгоритм должен выглядеть так:

 

 

01) Skyrim - "Файл текстуры 1"
02) Инсталляция Мода 1 - заменяет "Файл текстуры 1" на "Файл текстуры 2". "Файл текстуры 1" - в копии.
03) Инсталляция Мода 2 - заменяет "Файл текстуры 2" на "Файл текстуры 3". "Файл текстуры 2" - в копии.
04) Деинсталляция Мода 1
05) Остается "Файл текстуры 3" так как записан позже. "Файл текстуры 2" - удаляем из копий.
06) Инсталляция Мода 1
07) Заменяет "Файл текстуры 3" на "Файл текстуры 2". "Файл текстуры 3" - в копии.

08) Деинсталляция Мода 2
09) Остается "Файл текстуры 2" так как записан позже. "Файл текстуры 3" - удаляем из копий.

10) Деинсталляция Мода 1
11) Заменяет "Файл текстуры 2" на "Файл текстуры 1". "Файл текстуры 1" - удаляем из копий.

12) В итоге активный файл "Файл текстуры 1". В копиях пусто.


Сообщение отредактировал Lord-Vadim: 06 августа 2013 - 19:55


#164 Ссылка на это сообщение Karandra

Karandra
  • Знаменитый оратор



  • 3 685 сообщений
  •    

Отправлено

Ты знаешь сколько файлов придётся сохранять при этом? Размер может быть от 100 МБ до нескольких гигабайт. Сколько придётся копить информации в журнале (не говоря уже о том, что придётся делать несколько журналов, одного не хватит). И после деинсталляции думать какой файл нужно восстановить: из этого инсталлятора из того или ещё из какого. Тут будет очень много логических ошибок, именно логических. Нет, нет и нет.


pre_1454504183__logo.png Kortex Mod Manager: Discord | GitHub | Web-site

#165 Ссылка на это сообщение Lord-Vadim

Lord-Vadim
  • Следопыт
  • 77 сообщений
  •    

Отправлено

Ты знаешь сколько файлов придётся сохранять при этом? Размер может быть от 100 МБ до нескольких гигабайт. Сколько придётся копить информации в журнале (не говоря уже о том, что придётся делать несколько журналов, одного не хватит). И после деинсталляции думать какой файл нужно восстановить: из этого инсталлятора из того или ещё из какого. Тут будет очень много логических ошибок, именно логических. Нет, нет и нет.

 

Ты заблуждаешься. Не так много как ты думаешь. Процентов 70% модов делают нормальные авторы и пакуют свои ресурсы в архивы ".bsa" - там ничего запоминать не надо. А вот те, которые делают реплейсеры - те да, придется запоминать. Можно паковать копии в архив для экономии места. А логические ошибки..., на то ты и программист, что бы их избегать. На счет размера - копия папки DATA занимает не меньше места, как защита от глючных модов.

Но без алгоритма восстановления твою программу можно использовать только для настроек графики и ENB. А установку модов придется делать как раньше: через Wrye Bash, так как там алгоритм деинсталляции реализован отлично, но вот инсталляторы писать там не удобно - вручную и долго.


Сообщение отредактировал Lord-Vadim: 06 августа 2013 - 22:58


#166 Ссылка на это сообщение Karandra

Karandra
  • Знаменитый оратор



  • 3 685 сообщений
  •    

Отправлено

Запоминать придётся в любом случае. Ладно с местом на диске, у некоторых его по 2 ТБ, это у меня всего по 150 и 250 ГБ (Можно и не включать резевное копирование вообще, если всё таки сделаю, то отключаемым).

Делаем так. Устанавливаем плагин, он перезаписывает пару файлов (допустим оригинальных). Надо эти перезаписываемые файлы скопировать и сжать до перезаписи, это просто (относительно, тут свои заковырки). При установке следующего мода, перезаписывающего эти же файлы снова скопировать и архивировать. Но как называть архивы с копиями? По названию плагина из которого они установлены? Не вариант, его может не быть, или не быть записи в журнале об этом и скорость такой проверки оставляет желать лучшего. Называть как ID установщика, перезаписывающего их? Можно, я вижу в этом выход. Но пойдём дальше. Я удаляю первый плагин и все его файлы и у меня есть две копии файлов что были там раньше. Какую из них восстановить? Ту что была записана при установке первого мода или вторую? Копию для первого установщика? Я не знаю, не уверен.


pre_1454504183__logo.png Kortex Mod Manager: Discord | GitHub | Web-site

#167 Ссылка на это сообщение Lord-Vadim

Lord-Vadim
  • Следопыт
  • 77 сообщений
  •    

Отправлено

Не боись... Как говорил Крош из любимого мультика моих детей ("Смешерики"): "Глаза бояться, а руки делают..."

1) Место на диске. Я уже писал. Не важно Диск на 150 Гб или 2 Тб любой нормальный пользователь всё равно экономит место на диске, а реализация алгоритма восстановления позволит удалить копию папки "Data" (без копии мне Skyrim приходилось переустанавливать каждые две недели), так-что еще и экономия места получится.

2) Запоминать не в любом случае. Если плагин ничего не заменяет, то и запоминать ни чего не надо. Зачем мусор в журнале и лишние архивы. Сохранять только копии заменяемых файлов. В плагине может быть сотня файлов, а заменяемых 2-3 - только их и сохранять иначе и 2Тб не хватит. :)

3) Архивы называть по ID установщика.

4) В "Журнале замен" делать записи: "ID" - "Дата установки" - "Время установки" - "Имя перезаписанного файла".

5)  Еще раз внимательно просмотри алгоритм, поменял нумерацию, чтобы стало понятней:

 

 

01) Skyrim - Файл_0
02) Инсталляция Мода_1 - заменяет Файл_0 на Файл_1. Файл_0 - в Архив_ID=1. Делаем запись в журнале ID=1
03) Инсталляция Мода_2 - заменяет Файл_1 на Файл_2. Файл_1 - в Архив_ID=2. Делаем запись в журнале ID=2
04) Деинсталляция Мода_1
05) Остается Файл_2 так как записан позже. в Архиве_ID=2 заменяем Файл_1 на Файл_0 (из Архива_ID=1). Удаляем Архив_ID=1. Удаляем запись из журнала ID=1
06) Инсталляция Мода_1
07) Заменяет Файл_2 на Файл_1. Файл_2 - в Архив_ID=1. Делаем запись в журнале ID=1
08) Деинсталляция Мода_2
09) Остается Файл_1 так как записан позже. в Архиве_ID=1 заменяем Файл_2 на Файл_0 (из Архива_ID=2). Удаляем Архив_ID=2. Удаляем запись из журнала ID=2
10) Деинсталляция Мода 1
11) Заменяет Файл_1 на Файл_0 (из Архива_ID=1). Удаляем Архив_ID=1. Удаляем запись из журнала ID=1
12) В ИТОГЕ:  Активный файл -  Файл_0. Архивов нет. Записей в "Журнале замен" нет.

 

"Журнал замен" лучше делать не текстовым файлом, а базой данных и индексировать по полям "ID" и "Имя перезаписанного файла" - тогда поиск будет быстрым, но это уже на твое усмотрение.


Сообщение отредактировал Lord-Vadim: 06 августа 2013 - 22:48


#168 Ссылка на это сообщение Karandra

Karandra
  • Знаменитый оратор



  • 3 685 сообщений
  •    

Отправлено

1) Всё равно в сумме может выйти прилично, но ты прав.

2) А я о чём? Ты говорил что BSA не надо запоминать, но всё таки надо.

3) Надо же!

4) Зачем дата и время? Допустим, я смогу написать функцию сравнения дат и времени, но зачем это?

5) Ещё раз? А, понял.

 

Очень трудно понять алгоритм, я думал так: установка мода 1, заменяет имеющийся файл и отправляет его в архив с ID 1. Запись в журнал: Архив ID=1. Установка второго мода. Копирование имеющегося файла в архив с ID 2, запись в журнал: Архив ID=2. Перезапись. Деинсталляция первого. Удаление всего что надо и возврат из файла из копии 1. Удаление копии. Пока писал, понял что так не надо. Суть я понял. Буду сравнивать дату и время. Вопрос №4 отпадает.

 

После всего этого мне надо будет тебя связать и упрятать подальше, а то ещё чего покруче предложишь. <Тут какой-нибудь смайлик>.


Сообщение отредактировал Кербер: 06 августа 2013 - 22:57

pre_1454504183__logo.png Kortex Mod Manager: Discord | GitHub | Web-site

#169 Ссылка на это сообщение Umbakano Jr

Umbakano Jr
  • Крестный внук

  • 3 967 сообщений
  •    

Отправлено

 но вот инсталляторы писать там не удобно - вручную и долго.

Не согласен - с этим BAIN Tools весело и быстро!  :blum:



#170 Ссылка на это сообщение Karandra

Karandra
  • Знаменитый оратор



  • 3 685 сообщений
  •    

Отправлено

У меня красивее.  ;)


pre_1454504183__logo.png Kortex Mod Manager: Discord | GitHub | Web-site

#171 Ссылка на это сообщение Lord-Vadim

Lord-Vadim
  • Следопыт
  • 77 сообщений
  •    

Отправлено

Не согласен - с этим BAIN Tools весело и быстро!  :blum:

 

Не видел. Надо будет глянуть.



#172 Ссылка на это сообщение Umbakano Jr

Umbakano Jr
  • Крестный внук

  • 3 967 сообщений
  •    

Отправлено

У меня красивее.  ;)

Ну раз красивее, так сделай отдельную прогу по созданию комплексных bain-архивов!

Еще круче, если полу-автоматом будет создаваться файл wizard!



#173 Ссылка на это сообщение Lord-Vadim

Lord-Vadim
  • Следопыт
  • 77 сообщений
  •    

Отправлено

После всего этого мне надо будет тебя связать и упрятать подальше, а то ещё чего покруче предложишь. <Тут какой-нибудь смайлик>.

 

Сам бы себя связал, а то идеи так и прут. :)

2) BSA не надо запоминать, так как они обычно называются по имени плагина (то есть имеют уникальное имя) и перезаписаны они могут быть только новой версией плагина. Не думаю, что надо запоминать плагины по разным версиям, так как в идеале замена выглядит следующим образом: сначала удали старую версию плагина, а затем установи новую.

 

Алгоритм сравнения и замены файлов в архиве подкину завтра... спать хочется...


Сообщение отредактировал Lord-Vadim: 06 августа 2013 - 23:14


#174 Ссылка на это сообщение Karandra

Karandra
  • Знаменитый оратор



  • 3 685 сообщений
  •    

Отправлено

Ну раз красивее, так сделай отдельную прогу по созданию комплексных bain-архивов!

Еще круче, если полу-автоматом будет создаваться файл wizard!

Не берусь за то, в чём ничего не понимаю.

 

Алгоритм сравнения и замены файлов в архиве подкину завтра... спать хочется...

Такой же как раньше, не программный код надеюсь? Хотя у меня и так есть идеи как реализовать сравнение.

 

 

"Журнал замен" лучше делать не текстовым файлом, а базой данных и индексировать по полям "ID" и "Имя перезаписанного файла" - тогда поиск будет быстрым, но это уже на твое усмотрение.

Ты же не про SQL? Нет? Иначе это надолго. Я с ней дел ещё не имел. Так, ты что уже все внутренности программы осмотрел?


Сообщение отредактировал Кербер: 06 августа 2013 - 23:13

pre_1454504183__logo.png Kortex Mod Manager: Discord | GitHub | Web-site

#175 Ссылка на это сообщение Lord-Vadim

Lord-Vadim
  • Следопыт
  • 77 сообщений
  •    

Отправлено

Такой же как раньше, не программный код надеюсь? Хотя у меня и так есть идеи как реализовать сравнение.

 

Ты же не про SQL? Нет? Иначе это надолго. Я с ней дел ещё не имел. Так, ты что уже все внутренности программы осмотрел?

 

1) Такой же. Лишним не будет. Как говориться одна голова - хорошо, а две лучше.

2) "Внутренности" программы я не смотрел. Просто если бы у тебя были подключены базы (да SQL она родимая) то ты бы не переживал по поводу загруженности журналов и скорости поиска в них.



#176 Ссылка на это сообщение Karandra

Karandra
  • Знаменитый оратор



  • 3 685 сообщений
  •    

Отправлено

SQL изучать придётся. Если я в ней хоть что-то пойму, то использую её, если же нет, то тогда останется XML.


pre_1454504183__logo.png Kortex Mod Manager: Discord | GitHub | Web-site

#177 Ссылка на это сообщение Lord-Vadim

Lord-Vadim
  • Следопыт
  • 77 сообщений
  •    

Отправлено

SQL изучать придётся. Если я в ней хоть что-то пойму, то использую её, если же нет, то тогда останется XML.

Если собираешься и дальше программировать - по любому пригодится!



#178 Ссылка на это сообщение Karandra

Karandra
  • Знаменитый оратор



  • 3 685 сообщений
  •    

Отправлено

Я бы отложил это изучение на потом. Ладно завтра подумаю что и как.


pre_1454504183__logo.png Kortex Mod Manager: Discord | GitHub | Web-site

#179 Ссылка на это сообщение Lord-Vadim

Lord-Vadim
  • Следопыт
  • 77 сообщений
  •    

Отправлено

Ну вот не зря говорят, что: "утро вечера мудренее"!
Проснулся и сразу новое решение. Кстати, и без SQL будет работать быстро.
Старая концепция подразумевала, при деинсталляции плагинов, перенос файлов из архива в архив, мне кажется, что это будет слишком длительная операция, так что обойдемся без этого.
И так, новая концепция:
Делаем для каждого файла свой архив хранения копий.
При этом, в каталоге архивов сохраняем структуру расположения (Skyrim\Data\...), так как файлы с одинаковыми именами могут быть в разных каталогах.
И ты был прав: не нужны Дата и Время файла. Нужна структура по типу стека. Как это будет выглядеть на практике:
Файл журнала делаем по типу ".ini", то есть с секциями и данными. В секции указываем полный путь к файлу. Секции в файле журнала располагаем по алфавиту для быстрого поиска. В данных записываем ID плагина.
Теперь как будет выглядеть алгоритм в новой концепции:
01) Skyrim - Файл_0
02) Инсталляция Мода_1
     Делаем запись в журнал:
     [Skyrim\Data\Файл_0]
     ID=Мод_1
     Файл_0 переименовываем в Файл_Мод_1 и записываем его в архив Skyrim\Data\Файл_0.zip
     Файл_1 записываем вместо Файла_0 в Skyrim
03) Инсталляция Мода_2
     Делаем запись в журнал:
     [Skyrim\Data\Файл_0]
     ID=Мод_1
     ID=Мод_2
     Файл_1 переименовываем в Файл_Мод_2 и записываем его в архив Skyrim\Data\Файл_0.zip
     Файл_2 записываем вместо Файла_1 в Skyrim
04) Инсталляция Мода_3
     Делаем запись в журнал:
     [Skyrim\Data\Файл_0]
     ID=Мод_1
     ID=Мод_2
     ID=Мод_3
     Файл_2 переименовываем в Файл_Мод_3 и записываем его в архив Skyrim\Data\Файл_0.zip
     Файл_3 записываем вместо Файла_2 в Skyrim

После этих процедур мы имеем:
     В Журнале запись по типу стека, то есть ID расположены в порядке добавления:
          [Skyrim\Data\Файл_0]
          ID=Мод_1
          ID=Мод_2
          ID=Мод_3
     В архиве Skyrim\Data\Файл_0.zip файлы:
          Файл_Мод_1     ; бывший Файл_0
          Файл_Мод_2     ; бывший Файл_1
          Файл_Мод_3     ; бывший Файл_2

     В Skyrim:

          Файл_3

Теперь рассмотрим процедуры удаления:
01) Если удаляется последний мод в списке:
     Файл_Мод_3 записываем в Skyrim и удаляем его из архива.
     из журнала удаляем запись ID=Мод_3
     После этого имеем:
          В Журнале:
               [Skyrim\Data\Файл_0]
               ID=Мод_1
               ID=Мод_2
          В архиве Skyrim\Data\Файл_0.zip файлы:
               Файл_Мод_1     ; бывший Файл_0
               Файл_Мод_2     ; бывший Файл_1

          В Skyrim:

               Файл_2

02) Если удаляется не последний мод в списке, допустим Мод_1:
     В Skyrim ничего не меняем.
     В архиве удаляем Файл_Мод_2.
     Файл_Мод_1 переименовываем Файл_Мод_2.
     После этого имеем:
          В Журнале:
               [Skyrim\Data\Файл_0]
               ID=Мод_2
               ID=Мод_3
          В архиве Skyrim\Data\Файл_0.zip файлы:
               Файл_Мод_2     ; бывший Файл_0
               Файл_Мод_3     ; бывший Файл_2

          В Skyrim:

               Файл_3

Как видишь, все достаточно просто.


Сообщение отредактировал Lord-Vadim: 07 августа 2013 - 08:43


#180 Ссылка на это сообщение Karandra

Karandra
  • Знаменитый оратор



  • 3 685 сообщений
  •    

Отправлено

Я наверное недостаточно проснулся, так как не понял половины. Может в процессе работы придёт решение как лучше сделать. И на быстродействие влияет не загруженность и размер файла журнала (на 2.2 проверял, там журнал был намного больше), а отрисовка строчек в список. И вот здесь лучше чтобы их было меньше, впрочем все эти закономерности рушит список инсталляторов - он грузится слишком быстро (не то чтобы я против), но это странно.


pre_1454504183__logo.png Kortex Mod Manager: Discord | GitHub | Web-site

#181 Ссылка на это сообщение Lord-Vadim

Lord-Vadim
  • Следопыт
  • 77 сообщений
  •    

Отправлено

Я наверное недостаточно проснулся, так как не понял половины. Может в процессе работы придёт решение как лучше сделать. И на быстродействие влияет не загруженность и размер файла журнала (на 2.2 проверял, там журнал был намного больше), а отрисовка строчек в список. И вот здесь лучше чтобы их было меньше, впрочем все эти закономерности рушит список инсталляторов - от грузится слишком быстро (не то чтобы я против), но это странно.

Разберешься...Если не разберешься - спрашивай, что не понятно.

А журнал замен пользователю вообще нет необходимости показывать, это внутренние дела программы как и что она заменяет/восстанавливает. Поэтому не будет торможения при прорисовке, так как рисовать ничего не надо.

Скорость нужна при работе алгоритма восстановления так как в журнале ищется информация о файлах какие  заменять/восстанавливать, какие не трогать, какие архивировать.

 

И вообще, я думал тебя порадует информация, что SQL не нужен... :)


Сообщение отредактировал Lord-Vadim: 07 августа 2013 - 13:52






Темы с аналогичным тегами kortex, kmm, kortex mod manager, mod, manager, mod manager

Количество пользователей, читающих эту тему: 3

0 пользователей, 3 гостей, 0 скрытых