Лаунчер версий Pilot. PilotLauncher скачивает версии из центра загрузок, распаковывает их без установки и запускает рядом друг с другом, каждую со своими настройками.
Редакции: ICE Enterprise, ICE, BIM, ECM, myAdmin. Источник версий: https://pilot.ascon.ru/release/.
- Список версий всех редакций, скачивание, распаковка без установки, запуск нескольких версий одновременно.
- Каждая версия работает в своём профиле: настройки, сохранённые логины и кэш не смешиваются.
- Версия, установленная в системе, определяется сама и запускается как раньше; её можно скопировать для запуска в отдельном профиле.
- Метка версии в заголовке окна запущенного Pilot.
- Избранные версии: звезда рядом с выбором версии поднимает версию в начало списка и помечает её.
- Заметки о выпуске: что нового в выбранной версии и что изменилось между двумя версиями.
- Расширения PilotLookUp и DynamoPilot: установка, обновление, удаление для конкретной версии, одна общая копия на все версии.
- Работа без интернета: установщики из файлов, папка с установщиками, скачивание zip для переноса на другой ПК.
- Установка выбранной версии в систему с заменой текущей.
- Установщик для одного пользователя и портативная версия, .NET на ПК не нужен.
Требуется Windows x64 (Windows 10 1607 и новее или Windows 11; проверялось на Windows 11). Файлы лежат на странице Releases репозитория:
PilotLauncher-Setup.exeставит лаунчер в%LOCALAPPDATA%\Programs\PilotLauncherбез прав администратора: ярлык в меню «Пуск», запись в «Приложения». Удаление там же илиPilotLauncher.exe --uninstall; скачанные версии и настройки при этом не удаляются.PilotLauncher-portable-win-x64.zipсодержит один exe иportable.flag, все данные лежат рядом с ним.SHA256SUMS.txtсодержит контрольные суммы обоих файлов. Файлы не подписаны, поэтому Windows SmartScreen может предупредить при первом запуске.
- Выберите редакцию и версию внизу окна и нажмите «Запустить». Если версии нет на диске, лаунчер скачает её, распакует и запустит.
- Версия, установленная в системе, помечена «установлена в системе» и запускается от вашей учётной записи, с вашими настройками.
- Стрелка рядом с кнопкой открывает меню версии:
- «Запустить в отдельном профиле» (если есть и системная версия, и копия);
- «Поставить для отдельного пользователя»: копия системной версии для запуска в отдельном профиле, параллельно с основной;
- «Открыть папку», «Создать ярлык на рабочем столе»;
- «Открыть данные Pilot копии»: настройки и журналы Pilot версии, запущенной в отдельном профиле (
C:\Users\<пользователь версии>\AppData\Roaming\ASCON\<продукт>), в вашем проводнике. Кнопка «открыть журнал» внутри Pilot такой версии не работает (Windows не открывает папки для программы, запущенной под другим пользователем), этот пункт её заменяет. Доступ к папке лаунчер выдаёт вам автоматически при первом запуске копии (один раз, запрос Windows не появляется); - «Установить в систему (заменить текущую)...», см. ниже;
- «Удалить копию...»: удаляет версию, скачанную лаунчером, с вопросом, удалять ли данные версии (подключения, логины, кэш). Установка в системе не затрагивается;
- «Удалить из системы...»: удаляет установленную в системе версию её деинсталлятором, с подтверждением и запросом Windows. Копия лаунчера остаётся. Если у версии есть и установка, и копия, каждую можно удалить отдельно.
- Раздел «Что нового» показывает заметки о выпуске выбранной версии. Переключатель «Что изменилось между версиями» собирает выпуски между версией, выбранной внизу, и версией из списка «Сравнить с версией».
- Блок «Расширения» ставит PilotLookUp и DynamoPilot в папку
Developmentвыбранной версии (подробнее ниже). - Пока клиенты запущены, закрытие окна сворачивает лаунчер в трей: он поддерживает метку версии в заголовках окон.
Если Pilot отдельного профиля предложит обновиться, откажитесь: обновление ставит служба PilotUpdater на весь компьютер и может заменить установленную в системе версию.
Меню «Файл» в шапке окна:
- «Добавить из файла...»: один или несколько установщиков (
Pilot-...-setup_версия.zipили.exe), либо перетащите файлы на окно. Редакция и версия определяются по имени файла или по самому exe, при неудаче лаунчер спросит. Ваши файлы не меняются и не удаляются. - Папка с установщиками (настройки): при старте лаунчер ищет в ней файлы
Pilot-...-setup_версия.zipи.exe(без вложенных папок) и показывает их версии как доступные без сети. Папка может быть на флешке. - «Скачать для офлайна...»: скачивает zip выбранной версии в выбранную папку, без распаковки.
Список версий офлайн доступен, если лаунчер хотя бы раз был в сети (он хранит последний список); иначе остаются установленные, скопированные и офлайн-версии.
Блок под сведениями о версии ставит PilotLookUp и DynamoPilot из их последних релизов на GitHub. Кнопки: «Установить», «Обновить» (когда есть релиз новее), «Обновить все», «Удалить». После изменений перезапустите Pilot этой версии.
- Копия расширения одна на все версии: в
Developmentкаждой версии лежит только ссылка. DynamoPilot занимает около 540 МБ, но в хранилище он один. Сам DynamoPilot при первом запуске распаковывает свою оболочку (около 350 МБ) в%LOCALAPPDATA%\DynamoPilotкаждого профиля, это лаунчер объединить не может. - Если в
Developmentуже есть папка с таким именем, сделанная не лаунчером (например, ваша отладочная копия), лаунчер её не трогает. Кнопка «Заменить» после подтверждения переносит её в_replacedрядом с хранилищем расширений и ставит ссылку. - Версия расширения не привязывается к версии Pilot, ставится последний релиз. Совместимость со старыми клиентами лаунчер не проверяет.
Версия, запущенная в отдельном профиле, работает под своим пользователем Windows и не видит ваши файлы: ни Загрузки, ни рабочий стол. Чтобы открыть файл в такой версии Pilot (например, загрузить модуль расширения), положите его в общую папку. Список таких папок: «Настройки» → «Общие папки».
- «Создать папку по умолчанию» делает папку
C:\Users\Public\Documents\Pilot Launcher(в «Общих документах» Windows). Права ей выдавать не нужно, запрос Windows не появляется. Это самый простой вариант. - «Добавить...» открывает изолированным версиям любую вашу папку (на чтение и изменение, вместе с вложенными). Windows один раз запросит подтверждение (права администратора). Нельзя открыть диск целиком, системные папки,
ProgramData, папку профиля пользователя целиком, данные лаунчера и папку скачанных версий, а также сетевые папки и ссылки на папки. - «Убрать» закрывает папку (файлы в ней не удаляются), «Открыть» показывает её в проводнике.
- Файл надо класть в общую папку без запроса прав администратора (обычным копированием из ваших папок). Файл, созданный с правами администратора, получает высокий уровень защиты, и изолированный Pilot не сможет открыть его для записи («Отказано в доступе»).
- Права получают только изолированные пользователи этого лаунчера (через группу
PilotLauncher-<метка>на вашего пользователя Windows), другие пользователи ПК не затрагиваются.
«Установить в систему (заменить текущую)...» ставит выбранную версию настоящим установщиком на весь компьютер (клиент, драйвер виртуального диска Pismo, политика подписи драйверов, как при обычной установке). Доступно для версии, которой нет в системе: скачанной, ещё не скачанной (установщик загрузится из центра загрузок) или из файла установщика. Перед началом лаунчер показывает, что будет сделано, и просит подтверждение.
- Выбранная версия новее установленной: установщик заменяет её сам.
- Выбранная версия старше: пакет не позволяет понижение, поэтому сначала удаляется установленный клиент этой редакции, потом ставится выбранный.
- Затрагивается только клиент выбранной редакции. Если клиент этой редакции запущен (у любого пользователя), лаунчер предупреждает и ничего не делает.
- Установка идёт тихо и может занять несколько минут. При ошибке в сообщении указан путь к журналу в
%LOCALAPPDATA%\PilotLauncher\logs.
- Версии не устанавливаются. Установщик Pilot (WiX Burn) не запускается: из zip достаётся exe, из него вырезается встроенный контейнер, из него MSI, и клиент распаковывается через
msiexec /a. Скачанные и промежуточные файлы удаляются сразу, на диске остаётся только распакованный клиент. - Изоляция: отдельный пользователь Windows на версию. Имя вида
plab12E26x13x62219(владелец, редакция, версия), пароль случайный и хранится зашифрованным (DPAPI) только для вашей учётной записи. Пользователь обычный, не администратор, скрыт с экрана входа; своиHKCU,%APPDATA%,%LOCALAPPDATA%у каждой версии получаются сами. ПодменаAPPDATAв окружении версии не изолирует, поэтому выбраны отдельные пользователи. - Права администратора нужны для создания и удаления такого пользователя, для установки в систему и для первого связывания профиля с папкой расширений. Лаунчер запускает свою копию с ключом
--admin, Windows показывает запрос UAC. Копия принимает только свои команды: пользователей только своего формата, известные редакции и фиксированные пути. - Папка версий по умолчанию
C:\ProgramData\PilotLauncher\versions(меняется в настройках, только локальный диск). Остальные пользователи ПК могут запускать оттуда файлы, но не менять чужие. В ней же.extensions(общие копии расширений),.profiles(папкиDevelopmentотдельных профилей) и.tmp. - Данные лаунчера:
%LOCALAPPDATA%\PilotLauncher(настройки, журналlogs\launcher.log, пароли профилей, кэши списка версий, заметок и релизов расширений); в портативной версии папкаdataрядом с exe. - Расширения. Релиз скачивается с GitHub, проверяется по SHA-256 из ответа GitHub (если он есть) и распаковывается в
.extensions\<расширение>\<релиз>. ВDevelopmentверсии создаётся junction (ссылка на папку, права администратора не нужны); Pilot открывает её как обычную папку, это проверено на живом клиенте 26.11. Релиз удаляется, когда на него не осталось ссылок. Для системной установки ссылки лежат в вашем%LOCALAPPDATA%\ASCON\<продукт>\Development, для отдельного профиля в.profiles\<пользователь>\Development, а профиль один раз связывается с этой папкой (запрос UAC). Ответ GitHub хранится с ETag и считается свежим 6 часов, кнопка обновления в шапке спрашивает сразу. - Заметки о выпуске берутся со страницы https://help.pilotems.com/ru/Content/RelNotes.htm (сервер не отдаёт
ETag, поэтому копия считается свежей сутки). Редакции ICE Enterprise, ICE и ECM читают строки «Pilot-ICE Desktop», BIM читает «Pilot-BIM Desktop», myAdmin читает «Pilot-myAdmin Desktop». Версия ищется точно, а если её нет, по первым трём или двум числам при единственном совпадении. - Сертификат help.pilotems.com. Сайт отдаёт сертификат удостоверяющего центра Минцифры (Russian Trusted Root CA), которому Windows по умолчанию не доверяет. Тогда под предупреждением появляется кнопка «Установить»: она включает доверие этому корню только внутри лаунчера и только для help.pilotems.com, в Windows ничего не устанавливается. Корень встроен в программу (
src/PilotLauncher.Core/Net/russian_trusted_root_ca.crt, источник https://gu-st.ru/content/lending/russian_trusted_root_ca_pem.crt, SHA-256D26D2D0231B7C39F92CC738512BA54103519E4405D68B5BD703E9788CA8ECF31, действует до 28.02.2032) и при запуске сверяется с этим отпечатком. Отозвать доверие можно ссылкой в разделе «Что нового». Отзыв сертификата не проверяется.
Режимы командной строки: --launch <IceEnterprise|Ice|Bim|Ecm> <версия> (запускают ярлыки), --install, --uninstall, --admin ... (служебный, вручную не вызывать).
Что не проверялось на живом ПК (подробности в docs/design.md):
- создание пользователя Windows и запуск клиента под ним, связывание профиля с папкой расширений;
- установка в систему с заменой текущей (автотесты работают на подменённых реестре и запуске программ), особенно понижение версии: пробовать на тестовой машине;
- установщики ICE, BIM, ECM и версий 15.x-25.x: заголовки совпадают с проверенными, содержимое не смотрели; имена исполняемых файлов и ключей реестра для ICE и ECM выведены по аналогии с BIM и Enterprise;
- поведение клиента при согласии на обновление в изолированном профиле, метка версии в окне клиента под другим пользователем.
Остальное:
- Только Windows x64. Для первого запуска версии в отдельном профиле нужны права администратора от той же учётной записи, под которой запущен лаунчер.
- Если на одном ПК работают два пользователя Windows, у каждого свои профили (
plab12...иplcd34...): пароль привязан к создавшему профиль пользователю Windows. - Целостность скачанных установщиков Pilot и их подпись не проверяются (на сервере лежат отчёты
gost_hash_report_*.txt, их можно использовать). - Заметки выпусков 2024 года: часть исправлений не названа по продукту, в разделе показано только их число. Заметок до версии 24.1 на странице нет.
- Серверные пакеты Pilot и подключения к базам лаунчер не трогает.
- Журнал:
%LOCALAPPDATA%\PilotLauncher\logs\launcher.log. - Профиль версии остался после сбоя:
net userв консоли администратора покажет пользователейpl...; лишнего можно удалить командойnet user <имя> /deleteи папкойC:\Users\<имя>. - «Удалить копию...» с галочкой «удалить также данные» сообщает «Копия удалена, но данные версии остались»: копия удалена, а временный пользователь Windows и его профиль нет (Windows держит профиль открытым, хотя окон Pilot уже нет, или вы отклонили запрос Windows). Ничего не потеряно: при повторной загрузке этой версии пользователь используется снова. Помогает перезагрузка Windows и удаление вручную, как в пункте выше; имя пользователя названо в сообщении.
dotnet build PilotLauncher.sln
dotnet test PilotLauncher.sln # интеграционные тесты пропускаются, если нет установщиков Pilot
powershell -ExecutionPolicy Bypass -File build\publish.ps1 # artifacts\: Setup.exe, portable zip, SHA256SUMS.txtОпциональная проверка с настоящим GitHub (скачивает около 3,5 МБ во временную папку):
$env:PILOTLAUNCHER_LIVE_GITHUB = '1'
dotnet test tests\PilotLauncher.Core.Tests --filter TestCategory=LiveРелиз: добавить раздел версии в CHANGELOG.md, поставить тег vX.Y.Z и отправить его. Workflow .github/workflows/release.yml прогонит тесты, соберёт файлы и создаст GitHub Release с текстом из CHANGELOG; без записи в CHANGELOG он завершится ошибкой. Workflow build.yml собирает и тестирует каждый коммит в master и каждый pull request.
Репозиторий на GitHub вместе с описанием и темами создаёт build\github-repo.ps1: видимость нужно указать явно (-Visibility public или private), режим -DryRun только показывает команды, а -Push отправляет master.
- docs/design.md: устройство, что проверено и что нет.
- CHANGELOG.md: что вошло в релизы.
