Имя пользователя:
Пароль:
 

Показать сообщение отдельно
Stalker_AleX333


Сообщения: n/a

Профиль | Цитировать


alpap, посидел, подумал. Выходит как-то так:

С каждой версии продукта, будет устанавливаться файл без расширения (упс, не выйдет - последняя цифра номера версии будет считаться расширением файла) с расширением .id, носящий имя: Silver Raven mods pack ver.x.x.xx (будет только такой формат).
Он будет находиться в %USERPROFILE%\AppData\Local\Skyrim Special Edition и его имя строго задано (при обновлении продукта, обновляется и bat-ник, проверяющий его). Но, если пользователь накосячит с установкой обновлений или поставит полную новую\старую версию поверх уже существующей (что недопустимо в моем случае), в папке окажется несколько таких файлов. Задача - найти таковые и предупредить пользователя о возможных последствиях, путем принудительного вывода соответствующего сообщения при запуске bat-ника. Ну а если вдруг файл-идентификатор не был найден вообще то тут сам бог велел подозревать возможное наличие проблем.

Получается, полный алгоритм должен быть таким:

После установки продукта, запускается наш bat-ник и проверяет наличие файла-идентификатора по маске Silver Raven mods pack ver.x.x.xx.id в %USERPROFILE%\AppData\Local\Skyrim Special Edition, совпадающего по названию с тем что уже задан. Если такой файл уже есть и номер версии совпадает - идем дальше. Но если что-то не так...
1. Найден только устаревший id-файл - текст с ошибкой №1 (с описанием найденной старой версии. пример писал выше. при считывании номера, смотрим только символы после ver.)
2. Актуальный id-файл и устаревший id-файл - текст с ошибкой №2 (тут бы перечислить все найденные номера версий. прим. 1.2.3, 1.2.6, и т.д.)
3. Не нашли вообще ничего - текст с ошибкой №3

Набросал что-то вроде заготовки сообщений для различных ошибок
Код: Выделить весь код
:: Поиск файла-идентификатора сборки
set "ModsPackVerID=Silver Raven mods pack ver.1.2.7.id"
set "ModsPackVerIDOld=Silver Raven mods pack ver.x.x.x.id" :: - ?
:: %VerID% и %VerIDOld% - ?
if exist "%ModsPackVerIDOld%" ( color 0c
 echo.
 echo  ╔═══════════════════════════════════════════════════════════╗
 echo  ║ Панель управления для Silver Raven mods pack версии 1.2.7 ║
 echo  ╚═══════════════════════════════════════════════════════════╝
 echo.
 echo.
 echo *ВНИМАНИЕ! Обнаружен устаревший идентификатор сборки версии %VerID%. Вероятно, установка или обновление до данной версии было произведено некорректно. Рекомендуется произвести полное удаление, с ручной очисткой оставшихся файлов и установить сборку заново.
 echo.
 echo.
pause
)

if exist "%ModsPackVerID% %ModsPackVerIDOld%" ( color 0c
 echo.
 echo  ╔═══════════════════════════════════════════════════════════╗
 echo  ║ Панель управления для Silver Raven mods pack версии 1.2.7 ║
 echo  ╚═══════════════════════════════════════════════════════════╝
 echo.
 echo.
 echo *ВНИМАНИЕ! Обнаружено несколько файлов-идентификаторов сборки версий %VerID%, %VerIDOld%. Вероятно, установка или обновление до данной версии было произведено некорректно. Рекомендуется произвести полное удаление, с ручной очисткой оставшихся файлов и установить сборку заново.
 echo.
 echo.
pause
)

if not exist "%ModsPackVerID%" ( color 0c
 echo.
 echo  ╔═══════════════════════════════════════════════════════════╗
 echo  ║ Панель управления для Silver Raven mods pack версии 1.2.7 ║
 echo  ╚═══════════════════════════════════════════════════════════╝
 echo.
 echo.
 echo *ВНИМАНИЕ! Не обнаружено файла-идентификатора версии сборки. Вероятно, установка или обновление до данной версии было произведено некорректно. Рекомендуется произвести полное удаление, с ручной очисткой оставшихся файлов и установить сборку заново.
 echo.
 echo.
pause
)


Надеюсь, описал все нюансы. Если что - спрашивайте. Сам уже несколько раз перерабатывал варианты, чтобы пользователь не грохнул случайно файл-идентификатор. Пока это лучшее, что мне пришло в голову. Главное, чтобы bat-ник, который будет копировать файл-идентификатор (по окончании установки) успел отработать до того, как автоматически запустится основной. Я использую самораспаковывающиеся sfx архивы.

Последний раз редактировалось Stalker_AleX333, 26-09-2017 в 00:30.


Отправлено: 23:40, 25-09-2017 | #21