Jump to content
Korean Random

OpenWG.Utils: комплект полезняшек для InnoSetup (и не только)


Recommended Posts

Описание

 

Библиотека предзназначенная для облегчения написания установщиков модификаций для WoT.

 

Основная функция -- поиск клиентов игры и получение информации о них (версия, локаль, реалм и прочее) а также помощь в разграничении контента для Wargaming/Lesta клиентов.

 

Однако, есть и другие фишки, такие как:

  • BWXML
    • распаковка BigWorld XML
  • FS
    • Поиск файлов в каталоге
  • IMAGE
    • загрузка файлов форматов BMP, JPG, PNG, TGA
    • масштабирование изображений алгоритмом Ланцоша
    • смешение полупрозрачных изображений
    • умножение цветовых компонент на константу
  • INNO
    • Получение идентификатора компонента по индексу
  • JSON
    • загрузка, изменение и сохранение JSON-файлов с сохранением форматирования
  • NETWORK
    • пинг хостов
    • разрешение доменного имени в IP-адрес
  • PROCESS
    • получение списка запущенных процессов в каталоге
    • завершение процессов по имени или по их полному пути
  • SPLASHSCREEN
    • отображение сплэшскрина c закрытием по таймеру или по команде
  • STRING
    • выполнение замены в строке по регулярному выражению
  • WINE
    • детектирование запуска под Wine/Proton
  • WOT
    • поиск клиентов
      • WGC / Steam / 360 / LGC
      • Получение предпочительного клиента (текущий выбранный в WGC)
    • работа с клиентом
      • получение версии клиента и ее сверка по регулярному выражению
      • получение имени исполняемого файла клиента
      • получение версии исполняемого файла клиента
      • получение реалма (EU/NA/ASIA/CN/RU)
      • получение типа по контенту (SD/HD)
      • получение типа лаунчера (WGC/Steam/360/LGC)
      • получение типа вендора (Wargaming/Lesta)
      • получение типа релиза (Release/Common Test/Super Test/Sandbox)
      • получение пути до активного в клиенте mods/res_mods
      • получение языка клиента
      • детектирование запуска и завершение клиента
      • контроль состояния PDC-кэша (Wargaming)
  • WWISE
    • детектирование версии WWISE у банка (v2019 / v2023 )
    • детектирование лицензии WWISE у банка (без лицензии / Wargaming)
    • смена лицензии у банка (без лицензии / Wargaming)
  • XML
    • загрузка и сохранение XML файла
    • добавление и измение записей XML файла

 

Как пользоваться 

1) скачиваем

 

2) из комплекта поставки утягиваем два файла

  • bin/openwg.utils.x86_32.dll
  • innosetup/openwg.utils.iss

 

3) в своем корневом .iss файле прописываете

#define OPENWGUTILS_DIR_SRC    "bin"
#define OPENWGUTILS_DIR_UNINST APP_DIR_UNINST
#include "openwg.utils.iss"

где

  • OPENWGUTILS_DIR_SRC -- путь к каталогу куда вы положили .dll
  • OPENWGUTILS_DIR_UNINST  -- путь к каталогу файла деинсталляции относительно {app}, в подавляющем большинстве случаев должен совпадать с UninstallFilesDir

 

4)  изучаем пример в innosetup_demo/openwg_utils_demo.iss и вызываем нужные вещи, подробности вызова можно подсмотреть в openwg.utils.iss и  в *.h файлах в каталоге include

 

Пользователи

 

Название Сопровождающий Ссылка
XVM.Installer v1 @Mixaill https://gitlab.com/xvm/xvm/-/tree/master/src/installer
XVM.Installer v2 @ktulho https://gitlab.com/xvm/xvm.installer
Protanki @Yusha https://protanki.tv/
Jove's @phantasm https://joves-modpack.ru/
KorbenTeam @phantasm https://korbenteam.org/modpack
Amway921 @AtotIK https://wgmods.net/95/ , RIP начиная с WoT 1.26.0 🥲
Vspishka @AtotIK https://wgmods.net/131/ , RIP начиная с WoT 1.25.1 🥲
WGMods @AtotIK https://wgmods.net/16/ , RIP начиная с WoT 1.19.0 🥲
LeBwa team @POLIROID https://lebwa.tv/hub/modpack-lebwa-team
Tomato.gg @POLIROID https://wgmods.net/6391/
ModPacker @Polyacov_Yury https://github.com/PolyacovYury/ModPacker
Aslain @Aslain https://aslain.com/
    напишите в комментариях если про вас забыл/не знал

 

 

Скачать

 

 

Исходный код

https://gitlab.com/openwg/openwg.utils

 

История версий

  • v2022.12.04.1
    • первая для широкой публики
  • v2023.03.17.1
    • переработано API для взаимодействия с JSON
  • v2023.03.18.1
    • добавлены функции `JSON_SetDouble()`, `JSON_SetInteger()`, `JSON_SetString()`
  • v2023.03.18.2
    • исправлена потеря комментариев в JSON-файлах
  • v2023.08.01.1
    • исправлено дублирование клиентов WoT/МТ в случае если регистр имени каталога в файловой системе отличался от такового в конфигурационных файлах WGC/LGC
  • v2023.09.01.1
    • добавлены фукнции `JSON_ContainsKey()`, `JSON_GetString()`
  • v2023.09.17.1
    •  добавлены функции WWISE_OpenFile(), WWISE_CloseFile(), WWISE_Close(), WWISE_LicenseGet(), WWISE_LicenseSet()
  • v2023.09.21.1

    •  добавлены конвертеры лицензий WWISE-файлов в виде exe-файлов: wwise_convert_to_unlicensedwwise_convert_to_wg

  • v2023.11.01.1
    • добавлена функция NETWORK_Ping
    • добавлена функция NETWORK_Resolve
  • v2023.12.10.1
    • добавлена функция FS_FileEqual
    • добавлена функция FS_FileExists
    • добавлена функция XML_AddKey
    • добавлена функция XML_Close
    • добавлена функция XML_ContainsKey
    • добавлена функция XML_ContainsKeyEx
    • добавлена функция XML_OpenFile
    • добавлена функция XML_SaveFile
  • v2023.12.11.1
    • порефакторено внутри
  • v2023.12.12.1
    • добавлена функция FS_Search_QueryFolder (поиск каталога по регекспу)
    • добавлена функция FS_Search_Close
    • добавлена функция FS_Search_GetCount
    • добавлена функция FS_Search_GetPath
  •  v2023.12.13.1
    • оптимизирован FS_Search_QueryFolder
    • добавлена функция SPLASHSCREEN_Show
    • добавлена функция SPLASHSCREEN_Close
  •  v2024.02.02.1
    • добавлена функция WOT_GetClientVendor
    • исправлен вывод WOT_GetClientType для MT PublicTest
    • исправлена работы функции CHECK_IsLesta если клиент был добавлен вручную
    • в функцию CLIENT_FormatString добавлен вывод типа (WoT/MT)
  • v2024.02.10.1
    • добавлена функция SPLASHSCREEN_CloseAfter
    • добавлен фильтр по вендору в  WOT_LauncherSetDefault (только ВГ, только Леста, все вместе) 
  •  v2024.03.27.1
    • SPLASHCREEN_*: устранена проблема с перепутанными R и B каналами в .png
    • в поставку добавлена демка owg_bwxml_unpack (анпакер XML, можно перетаскивать на exe)
    • в поставку возвращена демка owg_wot_detect (поиск клиентов)
    • в поставку возвращены демки owg_wwise_convert_to (смена лицензии WWISE банок)
  • v2024.12.12.1

    • bin: добавлена утилита owg_wwise_info
    • iss: добавлены дефайны OPENWGUTILS_LANG_EN, OPENWGUTILS_LANG_RU
    • SPLASHSCREEN_*: множественные исправления
    • добавлена функция IMAGE_BitmapAlphaPremultiply
    • добавлена функция IMAGE_BitmapBlend
    • добавлена функция IMAGE_BitmapClone
    • добавлена функция IMAGE_BitmapFree
    • добавлена функция IMAGE_BitmapGetHeight
    • добавлена функция IMAGE_BitmapGetHeight
    • добавлена функция IMAGE_BitmapLoad
    • добавлена функция IMAGE_BitmapResize
    • добавлена функция IMAGE_BrushCreate
    • добавлена функция IMAGE_BrushCreate
    • удалена функция IMAGE_PngToBmp
  • v2024.12.17.1

    • добавлена функция INNO_ComponentEntryGetName
    • добавлена функция INNO_ComponentEntryGetDescription
    • добавлена функция INNO_ChecklistGetItemName
    • добавлена функция INNO_ChecklistGetItemDescription
    • добавлена функция INNO_ChecklistGetItemIndex
    • readme: добавлены примеры использования INNO_ функций
  • v2024.12.18.1

    •  INNO_ChecklistGetItemIndex: реализована нормализация слэшей
    • добавлена функция IMAGE_BitmapLoadTBitmap
  • v2024.12.18.2

    • IMAGE_BitmapLoadTBitmap: исправлено искажение пропорций изображения
    • IMAGE_BitmapResize: переведена на использование алгоритма Ланцоша вместо ближайшего соседа
  •  v2024.12.18.3

    • добавлена функция IMAGE_BitmapLoadTBitmapEx
  •  v2024.12.18.4

    • добавлена функция IMAGE_TBitmapResize
    • добавлена функция IMAGE_TBitmapScale
    • переименована функция IMAGE_BitmapLoadTBitmap -> IMAGE_TBitmapLoad
    • переименована функция IMAGE_BitmapLoadTBitmapEx -> IMAGE_TBitmapLoadScaled
  • v2024.12.22.1

    •  добавлена функция IMAGE_BitmapMultiplyColor
    •  добавлена функция IMAGE_TBitmapMultiplyColor
    • PROCESS_TerminateProcess, WOT_ClientTerminate: теперь убиваются все процессы с указанным путём, а не последний запущенный
  •  v2025.01.04.1

    • добавлена поддержка Mir Tankov Alpha (>= 1.32.0.0, имя файла клиента Tanki.exe)
    • добавлена функция WOT_GetClientExeName
  • v2025.01.09.1

    • owg_wot_detect: добавлен вывод информации о состоянии PDC кэша (World of Tanks >= 1.27.1)
    • demo: добавлен пример очистки кэша для установке и деинсталляции
    • добавлена функция WOT_GetClientCachePresent
    • добавлена функция WOT_GetClientCacheSupported
    • добавлена функция WOT_ClearClientCache

 

 

OpenWG.Utils_v2025.01.09.1.zip

Edited by Mixaill
  • Upvote 14
Link to comment
Short link
Share on other sites

  • The topic was pinned

Немного обновлений:

  • v2023.03.17.1
    • переработано API для взаимодействия с JSON
  • v2023.03.18.1
    • добавлены функции `JSON_SetDouble()`, `JSON_SetInteger()`, `JSON_SetString()`
  • v2023.03.18.2
    • исправлена потеря комментариев в JSON-файлах
  • v2023.08.01.1
    • исправлено дублирование клиентов WoT/МТ в случае если регистр имени каталога в файловой системе отличался от такового в конфигурационных файлах WGC/LGC
  • v2023.09.01.1
    • добавлены фукнции `JSON_ContainsKey()`, `JSON_GetString()`

 

 

Планы на будущее:

* распаковка BWXML в буфер

* смена лицензии банка WWise

Edited by Mixaill
  • Upvote 3
Link to comment
Short link
Share on other sites

Немного обновлений:

 

 v2023.09.17.1

* добавлены функции
   * WWISE_OpenFile()
   * WWISE_CloseFile()
   * WWISE_Close()
   * WWISE_LicenseGet() //0 - хз/битая банка, 1 - нет лицензии, 2 - лицензия ВГ
   * WWISE_LicenseSet()

 

 

примерный сценарий использования

procedure unlicense_bank(path:String);
var
  Handle: Integer;
begin
  Handle := WWISE_OpenFile(path);
  if WWISE_LicenseGet(Handle) = 2 then
  begin
     WWISE_LicenseSet(Handle, 1)
     WWISE_SaveFile(Handle, path)
  end;
  WWISE_Close(Handle);
end;

лицензию можно менять как в сторону нет -> WG, так и WG -> нет

 

Планы на будущее:

* распаковка BWXML в буфер

* смена лицензии на банки внутри вотмода без ручной распаковки и запаковки

* вынос менялки лицензии в консольную утилиту

Edited by Mixaill
  • Upvote 1
Link to comment
Short link
Share on other sites

v2023.09.21.1

* добавлены конвертеры лицензий в виде exe-файлов (достаточно перетянуть банки на ехешку)

  *  wwise_convert_to_unlicensed - конвертирует банки в Леста-совместимые

  *  wwise_convert_to_wg - конвертирует банки в ВГ-совместимые

 

 

OpenWG.Utils_v2023.09.21.1.zip

Edited by Mixaill
  • Upvote 12
Link to comment
Short link
Share on other sites

  • 5 months later...
12.09.2023 в 15:52, Mixaill сказал:

Немного обновлений:

  • v2023.03.17.1
    • переработано API для взаимодействия с JSON
  • v2023.03.18.1
    • добавлены функции `JSON_SetDouble()`, `JSON_SetInteger()`, `JSON_SetString()`
  • v2023.03.18.2
    • исправлена потеря комментариев в JSON-файлах
  • v2023.08.01.1
    • исправлено дублирование клиентов WoT/МТ в случае если регистр имени каталога в файловой системе отличался от такового в конфигурационных файлах WGC/LGC
  • v2023.09.01.1
    • добавлены фукнции `JSON_ContainsKey()`, `JSON_GetString()`

 

 

Планы на будущее:

* распаковка BWXML в буфер

* смена лицензии банка WWise

 

Подскажите пожалуйста как сделать так что бы всегда определялся и подставлялся клиент Лесты а не WG . Просто у меня два клиента леста и евро стоят и всегда первым делом в автоматическом поиске игры подставляется Евро клиент. А мне нужно что бы Леста была. Что мне сделать нужно. Не как самостоятельно разобраться не получается. Подскажите пожалуйста. нужно что бы всегда выбиралось первым делом так как на скреншоте 

Screenshot_1.png.181f6efa203d679b35e581917bbd18e5.png

Link to comment
Short link
Share on other sites

  • 4 months later...
14.03.2024 в 10:43, P.S.Enot сказал:

 

Подскажите пожалуйста как сделать так что бы всегда определялся и подставлялся клиент Лесты а не WG . Просто у меня два клиента леста и евро стоят и всегда первым делом в автоматическом поиске игры подставляется Евро клиент. А мне нужно что бы Леста была. Что мне сделать нужно. Не как самостоятельно разобраться не получается. Подскажите пожалуйста. нужно что бы всегда выбиралось первым делом так как на скреншоте 

Screenshot_1.png.181f6efa203d679b35e581917bbd18e5.png

В данной библиотеке есть прекрасная функция - WOT_LauncherSetDefault(LauncherFlavour) -> Устанавливает дефолтным указанный "Launcher Flavour", и возвращает количество найденных клиентов на ПК

Link to comment
Short link
Share on other sites

1 час назад, _McClayn_EU сказал:

В данной библиотеке есть прекрасная функция - WOT_LauncherSetDefault(LauncherFlavour) -> Устанавливает дефолтным указанный "Launcher Flavour", и возвращает количество найденных клиентов на ПК

Спасибо за ответ. но уже давным давно все решено и сделанно вот 

Screenshot_2.png.4fb64ae455768d7e4553581a74067de7.png

Screenshot_1.png.5e3ce500b6cac644e7144546052434bf.pngScreenshot_5.thumb.png.a6a5390941723fc2143a285b2e285bd5.png

Правда пришлось немного скрипт библиотекиOpenWG.Utils переписывать для полной совместимости с библиотекой FMXInno.dll  

Edited by P.S.Enot
Link to comment
Short link
Share on other sites

04.12.2022 в 22:33, Mixaill сказал:

Пользователи

> напишите в комментариях если про вас забыл/не знал

 

Второй вариант, пожалуйста :)

https://github.com/PolyacovYury/ModPacker
Буквально только что домигрировал код со старых костылей на утилиты в топике.

Coбираю им свои Тёмные Подвалы в кучку. Буду обновлять только пак, архивы останутся в лимбе.

(да, я собираюсь обновить свои поделия на 1.28/1.25. Зря отпуск брал, что ли?)

  • Upvote 5
Link to comment
Short link
Share on other sites

Немного обновлений

 

v2023.11.01.1

  • добавлена функция NETWORK_Ping
  • добавлена функция NETWORK_Resolve

v2023.12.10.1

  • добавлена функция FS_FileEqual
  • добавлена функция FS_FileExists
  • добавлена функция XML_AddKey
  • добавлена функция XML_Close
  • добавлена функция XML_ContainsKey
  • добавлена функция XML_ContainsKeyEx
  • добавлена функция XML_OpenFile
  • добавлена функция XML_SaveFile

v2023.12.11.1

  • порефакторено внутри

v2023.12.12.1

  • добавлена функция FS_Search_QueryFolder (поиск каталога по регекспу)
  • добавлена функция FS_Search_Close
  • добавлена функция FS_Search_GetCount
  • добавлена функция FS_Search_GetPath

 v2023.12.13.1

  • оптимизирован FS_Search_QueryFolder
  • добавлена функция SPLASHSCREEN_Show
  • добавлена функция SPLASHSCREEN_Close

 v2024.02.02.1

  • добавлена функция WOT_GetClientVendor
  • исправлен вывод WOT_GetClientType для MT PublicTest
  • исправлена работы функции CHECK_IsLesta если клиент был добавлен вручную
  • в функцию CLIENT_FormatString добавлен вывод типа (WoT/MT)

v2024.02.10.1

  • добавлена функция SPLASHSCREEN_CloseAfter
  • добавлен фильтр по вендору в  WOT_LauncherSetDefault (только ВГ, только Леста, все вместе) 

 v2024.03.27.1

  • SPLASHCREEN_*: устранена проблема с перепутанными R и B каналами в .png
  • в поставку добавлена демка owg_bwxml_unpack (анпакер XML, можно перетаскивать на exe)
  • в поставку возвращена демка owg_wot_detect (поиск клиентов)
  • в поставку возвращены демки owg_wwise_convert_to (смена лицензии WWISE банок)

OpenWG.Utils_v2024.03.27.1.zip

  • Upvote 2
Link to comment
Short link
Share on other sites

  • 4 months later...

OpenWG.Utils_v2025.01.04.1.zip

 

Немного обновлений

 

v2024.12.12.1

  • bin: добавлена утилита owg_wwise_info
  • iss: добавлены дефайны OPENWGUTILS_LANG_EN, OPENWGUTILS_LANG_RU
  • SPLASHSCREEN_*: множественные исправления
  • добавлена функция IMAGE_BitmapAlphaPremultiply
  • добавлена функция IMAGE_BitmapBlend
  • добавлена функция IMAGE_BitmapClone
  • добавлена функция IMAGE_BitmapFree
  • добавлена функция IMAGE_BitmapGetHeight
  • добавлена функция IMAGE_BitmapGetHeight
  • добавлена функция IMAGE_BitmapLoad
  • добавлена функция IMAGE_BitmapResize
  • добавлена функция IMAGE_BrushCreate
  • добавлена функция IMAGE_BrushCreate
  • удалена функция IMAGE_PngToBmp

v2024.12.17.1

  • добавлена функция INNO_ComponentEntryGetName
  • добавлена функция INNO_ComponentEntryGetDescription
  • добавлена функция INNO_ChecklistGetItemName
  • добавлена функция INNO_ChecklistGetItemDescription
  • добавлена функция INNO_ChecklistGetItemIndex
  • readme: добавлены примеры использования INNO_ функций

v2024.12.18.1

  •  INNO_ChecklistGetItemIndex: реализована нормализация слэшей
  • добавлена функция IMAGE_BitmapLoadTBitmap

v2024.12.18.2

  • IMAGE_BitmapLoadTBitmap: исправлено искажение пропорций изображения
  • IMAGE_BitmapResize: переведена на использование алгоритма Ланцоша вместо ближайшего соседа

 v2024.12.18.3

  • добавлена функция IMAGE_BitmapLoadTBitmapEx

 v2024.12.18.4

  • добавлена функция IMAGE_TBitmapResize
  • добавлена функция IMAGE_TBitmapScale
  • переименована функция IMAGE_BitmapLoadTBitmap -> IMAGE_TBitmapLoad
  • переименована функция IMAGE_BitmapLoadTBitmapEx -> IMAGE_TBitmapLoadScaled

v2024.12.22.1

  •  добавлена функция IMAGE_BitmapMultiplyColor
  •  добавлена функция IMAGE_TBitmapMultiplyColor
  • PROCESS_TerminateProcess, WOT_ClientTerminate: теперь убиваются все процессы с указанным путём, а не последний запущенный

 v2025.01.04.1

  • добавлена поддержка Mir Tankov Alpha (>= 1.32.0.0, имя файла клиента Tanki.exe)
  • добавлена функция WOT_GetClientExeName

 

  • Upvote 3
Link to comment
Short link
Share on other sites

 v2025.01.09.1

  • owg_wot_detect: добавлен вывод информации о состоянии PDC кэша (World of Tanks >= 1.27.1)
  • demo: добавлен пример очистки кэша для установке и деинсталляции
  • добавлена функция WOT_GetClientCachePresent
  • добавлена функция WOT_GetClientCacheSupported
  • добавлена функция WOT_ClearClientCache

OpenWG.Utils_v2025.01.09.1.zip

  • Upvote 1
Link to comment
Short link
Share on other sites

04.12.2022 в 22:33, Mixaill сказал:

получение типа вендора (Wargaming/Lesta)

добрый. пожалуйста если не трудно подскажите плиз, как/что и где именно в openwg.utils.iss изменять чтобы установщик находил именно один клиент. например если у человека установлены и РУ и ЕУ клиенты + оба тестовые, как сделать так чтобы установщик находил именно основу РУ клиента если модпак именно под него и сделан. чтобы он находил только РУ или ЕУ, догнал (но он находит как основу так и тестсервер а мне нужно чтобы ТОЛЬКО основу если под него сделан модпак или ТОЛКЬО тестсервер если модпак сделан для тестсервера) 

Link to comment
Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...