На эти выходные запланировали мы обновление 1с до версии 8.3.14.1694. Причины были разные, среди них исправленный баг динамического обновления, а также информация о том, что 1с окончательно разделяет лицензии на Проф и Корп, и, поэтому, возможно придется что-то обновлять. Про Проф и Корп могу направить к информационному письму http://1c.ru/news/info.jsp?id=25491. Если кратко, то в период с 25.02.2019 по 09.09.2019 у нас переходный период, в который потенциально можно обновить лицензии 1с и получить часть функциональности Корп для Проф лицензий купленных ранее (отсутствие ограничения на 12 ядер и 500 пользователей одной базы). Все это можно, если обновить до 8.3.14, а также некоторых релизов веток 8.3.12 и 8.3.13. У нас стояла 8.3.12, но более ранний релиз. Обновлять так обновлять, и в субботу мы перешли на 8.3.14.1694.
В субботу ничего особенного не случилось. Обычная установка, процедура по обновлению номера релиза в разных скриптах, модулей в iis, снятие режима совместимости, проверка. Ни с чем не столкнулись особенным, как ни тестировали. Видимо, если что есть, пользователи сообщат на неделе.
А дальше случилось интересное. Утром в воскресенье у меня полная почта диагностики, что регламентные задания не работают (они в конце должны дергать некоторый веб-сервис, а он собирает статистику). Захожу на сервер, бац, лицензии не установлены.
Начинаю разбираться. Во-первых, вспоминаю папку, где они лежали. Это c:\Program Files\1cv8\conf. Действительно, там пусто. Заливаю .lic файлы из копии, все запустилось. Но пропало раз, пропадет и два, начинаю разбираться.
Указанное выше информационное письмо говорит, что то ли лицензии нужно обновить, то ли не нужно, но делается это однократным запуском утилиты ring. Раньше мы так и ленились с ней разобраться, но теперь, похоже, откладывать нельзя. Итак, поехали, ставим и применяем ring.
1) Нужно поставить java. Открываем https://java.com/ru/download/ и лицезреем, что с 16 апреля 2019 у Явы изменилось лицензионное соглашение. Не желая вдаваться в детали, нахожу старый установщик, что качал весной, заливаю на сервер, устанавливаю. Он предупреждает, что соглашение изменилось, но к старым версиям это не относится. Ребут сервера (иначе не поставить ring).
Примечание на основе комментариев: ребут не обязателен, если вы можете отредактировать пути и у вас запустится java.
2) Отлично, переходим к установке утилиты ring и модуля license (они идут вместе). Теперь они не поставляются в глубокие папки, а лежат в папке установщика в директории license-tools. Запускаем установщик (инструкция говорила, что надо что-то разархивировать, но это не понадобилось), он быстренько ставит утилиту (установщик это один из cmd файлов, запускает Яву). Ребут сервера (иначе не запустится ring)
Примечание на основе комментариев: ребут не обязателен, если вы можете отредактировать пути и у вас запустится ring.
3) Да, вспоминаем, что для работы ring нужно еще расширение для Явы. Качаем по адресу https://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html, раскрываем архив, долго думаем, что с этим делать, в конечном итоге, находим, что надо поместить в папку с расширениями. У меня это оказывается c:\Program Files (x86)\Java\jre_<версия>\lib\ext. Ребут сервера на всякий случай.
Примечание на основе комментариев: пункт не обязателен начиная с версии Java 1.8.0_151 (можно не устанавливать JCE а установить свойство crypto.policy=unlimited в lib/security/java.security)
4) Запускаем утилиту ring (в командной строке от администратора). Хотим сначала посмотреть список лицензий. Она говорит что-то невнятное про укажите имя модуля. Поискав, даем команду ring license@0.10.0:x86_64 list (в следующие разы, кстати, не понадобилось всегда добавлять имя модуля). Компьютер шелестит мозгами и говорит, что не определил формат какой-то лицензии.
5) Долго думаем, осознаем, что он нашел какие-то lic файлы в папке c:\Program Data\1C\licenses. Понимаем, что у сервера была долгая и насыщенная жизнь, папки менялись от релиза к релизу, и сейчас .lic файлы разместились в разных местах, и часть из них является мусором. Начинаем разбираться и понемногу выкидываем то, на что ругается ring, а также собираем все лицензии в папке c:\Program Data\1C\licenses (естественно, не забываем делать резервные копии). Для перемещения, естественно, приходится останавливать сервер 1с. Кстати, отмечаем, что ночью из этой папки ничего потерто не было.
6) Наведя порядок в лицензиях (и сделав копию результата), начинаем пробовать команды ring license info --name <NAME> и ring license validate --name <NAME>. В качестве <NAME> нужно писать полностью строчку, выданную командой list. Лицензии нормальные, информация вся видна.
7) Возвращаемся к идее обновить лицензии. Читаем справку по команде update: "Выполняет обновление (переполучение) всех лицензий из хранилища лицензий. Под обновлением лицензии понимается повторное получение лицензии в центре лицензирования с теми же параметрами: регистрационный номер, пинкод, ключевые параметры. Существующие до обновления файлы с активированными программными лицензиями сохраняются с расширением .oldlic с целью резервного копирования." Предполагаем, что это именно то, что нужно. Опять останавливаем сервер 1с! - иначе не сможет обновить, поскольку должна переименовывать старые лицензии в .oldlic. Даем команду ring license update. Система задумывается и по одной обновляет лицензии. Действительно, старые получили расширения .oldlic, появились новые с новыми именами файлов.
8) Не наблюдаем никаких проблем, все работает. Лицензии новые пин-коды не потребовали. С замиранием в душе ждем утра понедельника, будет ли оно работать.