Раскатка на парк
Политика на сетевом ресурсе
Путь к файлу политики передаётся установщику через параметр POLICYPATH. Умолчания
у него нет: без параметра первая установка не проходит, а смена версии берёт путь,
записанный прежней установкой. Для парка машин путь ведёт на сетевой ресурс, доступный
компьютерам домена на чтение, например \\fileserver\laportausb$\policy.json: правка
одного файла на шаре применяется ко всем машинам без переустановки пакета. Ровно
\\server\laportausb$\policy.json для настоящей шары не годится – это заглушка,
которую служба читает как «путь не задан» и по которой в сеть не ходит.
Пакет и файл преобразования
- Положить
LaPortaUsb.msiна шару, доступную компьютерам домена на чтение. - Создать файл преобразования (
.mst) с нужным значениемPOLICYPATH– в тихой установке через групповую политику параметры иначе не передать.
Значение POLICYPATH из файла преобразования, как и при обычной установке, попадает
в реестр (HKLM\SOFTWARE\LaPortaUsb\PolicyPath) и там авторитетно: при раскатке
доменной политикой авторитетен параметр установки, а не файл appsettings.json,
поставленный рядом с программой. Обновление без параметра оставляет записанный путь
как есть, переданный явно – заменяет его.
Назначение на подразделение
Назначить пакет на подразделение: «Конфигурация компьютера» → «Установка программ». Именно на компьютер, а не на пользователя: служба ставится машинно.
Смена версии
Новая версия ставится тем же пакетом с тем же кодом обновления (UpgradeCode) и
увеличенной версией. Отдельно удалять прежнюю версию не нужно: Windows Installer
снимает её и ставит новую в рамках одной операции.
Чего делать нельзя – подменять файлы в каталоге программы мимо установщика. Причина
в учёте отключённых узлов: он живёт в %ProgramData%\LaPorta USB\disabled-nodes.json
и хранит вместе с узлом класс носителя. Формат прежних версий новая служба читает, обратно –
нет. Подмена файлов на прежнюю версию оставит машину с записями, которых та не понимает:
отключённые узлы останутся отключёнными, а служба о них не узнает, и включать их придётся
руками через диспетчер устройств.
Удаление силами установщика этой сложности не создаёт – и то, которое выполняется внутри обновления, и запущенное отдельно: оно останавливает службу, та снимает все отключения и очищает учёт, и следующая версия начинает с чистого листа.
Обновление той же версией разрешено явно (AllowSameVersionUpgrades в Package.wxs):
установка новой сборки поверх прежней удаляет её и ставит новую. Без этого Windows Installer
одинаковые версии за обновление не считает – установка завершается успехом и не делает
ничего, а при некоторых сочетаниях в списке установленных программ появляется вторая копия.
Найдено на приёмке.
В объекте групповой политики новый пакет назначается обновлением прежнего: в свойствах
нового пакета на вкладке «Обновления» указать прежний и выбрать «Пакет может обновлять
существующий пакет». Вариант «Удалить существующий пакет, затем установить обновляющий
пакет» не годится. Удаление идёт отдельной операцией и уносит записанный путь к политике,
а новый пакет ставится как первая установка. Без файла преобразования с POLICYPATH
она отказывает, и на подразделении не остаётся программы вовсе.
Файл преобразования нужен и новому пакету: по нему ставятся машины, которые приходят
в подразделение после смены версии. Приложить его можно только при создании назначения,
методом «Особый». Файл, сделанный для прежней версии, к новой может не подойти: код
продукта у каждой сборки свой. Надёжнее делать .mst заново для каждого выпуска.
Обновления на парке
Служба на каждой машине раз в сутки спрашивает сайт программы, не вышла ли версия новее,
и пишет в журнал событие update_available. Выгруженные журналы отвечают на вопрос,
какие машины отстали: событие приезжает на шару вместе с остальными записями.
Ставить обновление кнопкой из окна администратора на парке не нужно – версия на парке меняется групповой политикой, как описано выше. Кнопка рассчитана на отдельную машину.
Если парку нельзя обращаться наружу, проверка выключается двумя способами. Правкой
политики (check_updates: false) – одной строкой на весь парк, но кнопка в окне при этом
работать продолжает. Параметром установки UPDATECHECK=0 в файле преобразования –
машинно, и правкой политики этот запрет не снять.
Прокси служба берёт машинный: настройку WinHTTP, которая раскатывается групповой
политикой или командой netsh winhttp set proxy. Пользовательские настройки браузера
службе не видны. Подробнее – в install.md.
Если версию на парке меняют не групповой политикой, а силами самих машин, в политике
задаётся поле install_updates с ночными часами: служба скачает пакет и поставит его
сама, без администратора за машиной. Групповая политика для парка всё же надёжнее –
она ставит версию тогда, когда решил администратор, а не когда каждая машина дошла
до своего окна.
Чек-лист перед раскаткой
Из раздела 8 спеки. Выполняется до установки на вторую машину.
- Проверить модуль «Контроль устройств» в Kaspersky Endpoint Security. Если он включён для USB-накопителей – либо отключить его для них, либо отказаться от установки программы. Два независимых блокировщика на одной шине дают невоспроизводимое поведение: какой из них сработает первым, предсказать нельзя.
- Внести папку установки и оба исполняемых файла в доверенную зону KES. Иначе самозащита или контроль активности приложений может помешать отключению устройства, и запрет будет срываться без внятной причины.
- Прогнать полный цикл на одной машине: запрет, только чтение, разрешение, перезагрузка, работа токена, вход по токену.