Audion TC Updater

v1.2.0 ·

Checks, updates and rebuilds Audion TC release builds from scratch — from the outside, without going into each one by hand

  • automation
  • release-management
  • total-commander
  • updater
  • windows
Audion TC Updater

EN RU

Audion TC Updater

English

Содержание

Проверяет, обновляет и собирает с нуля релизные сборки Audion TC — снаружи, не заходя в каждую руками.

Окно

Start.exe открывает окно. Сверху — папка с релизами и переключатель секций ОБНОВЛЕНИЕ | СБОРКА, справа во всю высоту — журнал: на экране 16:9 первой кончается высота.

Рядом с переключателем секций — RU | EN: язык окна. По умолчанию окно и три файла без окна говорят по-английски, на каком бы языке ни была Windows. Кнопка меняет подписи, подсказки и язык, на котором пишут проверка, обновление и сборка; выбор запоминается в ._runtime\ui-lang.txt и держится до следующей смены. Уже напечатанные строки журнала остаются как были, а что пишут Windows и чужие программы, от выбора не зависит. Пока идёт работа, язык не переключить: на полпути это сбило бы отчёт.

При первом старте окно спрашивает, с чем работать на этой машине: папку с релизами, установщик и ключ GitHub. Обязательна только папка с релизами: без установщика подождёт секция СБОРКА, без ключа GitHub даёт 60 запросов в час. Установщик, который лежит внутри выбранной папки релизов, подставляется сам.

Пока идёт проверка, обновление или сборка, внизу бежит полоса и стоит строка: что именно идёт, сколько уже идёт и на каком шаге — «Идёт проверка · 0:04 · Опрашиваю источники…». Она обновляется четыре раза в секунду вместе с журналом, так что видно, что программа жива, а не встала.

Окно само начинает с проверки — она ничего не меняет. Другая папка с релизами — кнопка «Обзор» или путь в поле: он применяется по Enter или когда уходите из поля, и следующий старт откроется на нём же.

Три файла без окна

Файл Что делает Что меняет
Check-Releases.cmd смотрит, что в сборках устарело ничего — в сборки не пишет ни байта
Update-Releases.cmd показывает план, спрашивает и обновляет программы в сборках, их кнопки, меню и атлас
Build-Releases.cmd показывает план, спрашивает и собирает с нуля все сборки из списка сборка встаёт на место прежней, только если собралась целиком

Запускаются двойным кликом и берут папки, выбранные при первом старте. Чтобы работать с другой папкой релизов, перетащите её на файл. Пока первого старта не было, файлы просят открыть Start.exe или перетащить папку.

Какие сборки берутся

Любая папка Audion TC… в папке релизов: Initial, Audion, Ultimate, Creator, Developer, Admin — сколько есть. Контейнер вида Audion TC Portable\Audion TC тоже находится. Сборкой считается папка, где лежит TOTALCMD64.EXE.

ОБНОВЛЕНИЕ

Проверка показывает таблицу: строки — программы, столбцы — сборки. В клетке — версия в сборке, версия у автора и галочка «обновить». Клик по программе отмечает всю строку, по сборке — весь столбец.

Под таблицей:

  • актуально — какие программы свежие, по сборкам;
  • версию у источника не узнать — сайт автора не называет номер, пока файл не скачан (FastStone, HWiNFO, Sysinternals и ещё несколько).

Total Commander попадает в таблицу, если на ghisler.com вышел новее.

Пометка «эталон» значит: файл приезжает из установщика и при установке не качается. Обновление в релизе его освежит, но следующая сборка с нуля привезёт старый — обновите и установщик. fzf так больше не помечается: с 14.09.2026 установка сама качает его свежим.

Отчёт сохраняется таблицей в ._runtime\reports\. В конце проверка сама убеждается, что в сборках не изменился ни один файл, и пишет об этом.

Плагины Total Commander не проверяются: их архивы лежат на сайтах без номера версии.

«Обновить отмеченное» сначала спрашивает. Дальше для каждой сборки:

  1. если из неё сейчас что-то запущено — сборка пропускается;
  2. обновляются отмеченные программы, а если нужно — сам Total Commander;
  3. убираются прежние версии (.bak);
  4. пересобираются кнопки, меню, атлас и окно выбора программ;
  5. убирается машинное: кеш проверки, временные загрузки, кеш значков;
  6. проверяется, что обновилось на самом деле.

Обновление идёт скриптами самой сборки — теми же, что в её пульте.

СБОРКА

Сборка с нуля идёт тем же планом, что установка мастером: файл плана Setup\Scripts\Invoke-AudionInstall.ps1 берётся из установщика Audion Setup for Total Commander. Поэтому релиз не расходится с тем, что получает человек, поставивший Audion TC сам.

Установщик — отдельное поле с кнопкой «Обзор», версия — бейджем рядом с заголовком. Его спрашивает первый старт, а сменить можно здесь — хоть на мастер установщика, хоть на его раздачу; папка релизов от этого не меняется.

В секции — строка на каждую сборку: галочка, папка, сколько программ в наборе, язык меню и когда собрана текущая. Язык меню можно переставить перед сборкой.

Отмеченные сборки собираются по одной — так опрос источников укладывается в лимит GitHub. Для каждой:

  1. Total Commander скачивается с ghisler.com в черновик _stage\<набор>-<время>\Audion TC в папке релизов;
  2. ставятся программы набора и все плагины, у которых есть источник; каждый плагин записывается в Wincmd.ini;
  3. атлас и окно выбора программ пересобираются на языке меню;
  4. из черновика убирается машинное: временные загрузки, кеши, файл токена;
  5. встало всё — прежняя сборка уходит, новая занимает её место;
  6. что-то не встало — прежний релиз остаётся как был, черновик лежит в _stage, а в журнале и отчёте видно, чего не хватает.

Контейнер вокруг сборки — README.md, licenses и прочее у Audion TC Portable — не трогается. Initial собирается за несколько минут, Ultimate — полчаса и дольше. Отчёт — ._runtime\reports\build-*.md.

Сборка Набор Папка Меню
Initial initial Audion TC Portable\Audion TC EN
Audion audion Audion TC Audion RU
Ultimate ultimate Audion TC Ultimate RU
Admin admin Audion TC Admin RU
Creator creator Audion TC Creator RU
Developer programmer Audion TC Developer RU

Admin, Creator и Developer — наборы по занятию: собираются ровно по своему списку, как их ставит мастер.

Лицензия

Над списком сборок — поле для WINCMD.KEY. Выбранный ключ ляжет в каждую отмеченную сборку рядом с TOTALCMD64.EXE. Ключ не запоминается: при следующем открытии окна поле снова пустое. Вопрос перед сборкой и отчёт называют файл ключа, а строка сборки, в которой ключ уже лежит, помечена «с ключом».

Сборка с ключом — личная: публиковать её нельзя.

Без окна — перетащите WINCMD.KEY на Build-Releases.cmd, можно вместе с папкой релизов.

Ключ GitHub

Без ключа GitHub даёт 60 запросов в час, а программ в сборках полсотни. Ключ лежит открытым текстом в config\api_key_github.txt — одной строкой, и больше в файле ничего нет.

Первый старт спрашивает ключ вместе с папками. Потом он стоит в окне рядом с папкой релизов: бейдж показывает, принял ли его GitHub, а кнопка «Ключ GitHub» открывает диалог — вставить новый ключ, проверить сохранённый или убрать его. Новый ключ сохраняется, только если GitHub его принял, а если GitHub не ответил — без проверки. Без окна ключ меняют прямо в файле.

В начале проверки, обновления и сборки журнал сообщает, принял ли GitHub ключ и сколько запросов в час осталось. Ключ, который GitHub не принял, дальше не передаётся, и опрос идёт без него. Принятый уходит процессам через окружение и в сборки не попадает. Файл ключа исключён из git.

Отпечатки вместо версий

У десятка программ версию с сайта не узнать — раньше они всегда сидели в списке «версию у источника не узнать без скачивания». Теперь загрузчик сборки снимает для них отпечаток — имя файла со ссылки, тег ночной сборки или ETag из запроса HEAD, — и кладёт его в Ware\State\app-fingerprints.json. Проверка сравнивает отпечаток источника с тем, что сборка сняла, когда качала: разошлись — программа в списке на обновление, совпали — актуальна. В строке отчёта видно, что именно сменилось: FSViewer84.zip → FSViewer85.zip. Файл ради этого не скачивается.

Серая зона остаётся для тех, у кого отпечатка ещё нет ни с одной стороны: сборка не качала эту программу сама или источник не ответил.

Прокси

Адрес всегда ваш: ни одного адреса нет ни в коде, ни в config — проект публичный. Порядок такой: адрес, заданный в окне, затем HTTPS_PROXY из окружения, затем системный прокси Windows — его выставляют v2rayN, Hiddify, Clash и корпоративные сети.

В окне прокси стоит рядом с ключом GitHub: бейдж говорит, свой прокси или системный, а кнопка «Прокси» открывает диалог — задать адрес, проверить сохранённый или убрать его. Проверка — стук в GitHub через этот адрес; он идёт в стороне от окна, поэтому окно не замирает. Адрес сохраняется и тогда, когда стук не прошёл: прокси мог ещё не подняться, а перенабирать адрес с паролем заново — удовольствие ниже среднего.

Адрес лежит в ._runtime\proxy.txt — одной строкой, вне git и вне публичного архива: в нём может быть логин с паролем. В журнал он не пишется никогда — ни целиком, ни хостом в чужом сообщении об ошибке; журнал называет только схему — http, https или socks5.

Проверке, обновлению и сборке адрес передаётся через окружение (HTTPS_PROXY, HTTP_PROXY, ALL_PROXY), как и ключ GitHub, и возвращается как было после прогона. curl и PowerShell 7 берут его сами; для собственных запросов ставится DefaultWebProxy. socks5 понимают curl и PowerShell 7, Windows PowerShell 5.1 — нет, и журнал об этом говорит.

Настройки

Ни в коде, ни в config нет папок какой-либо машины. Что выбрал первый старт, лежит в ._runtime\folders.json:

  • releasesRoot — папка с релизами;
  • installerRoot — установщик.

Папка ._runtime не уходит ни в git, ни в публичный архив, поэтому там же лежат отчёты: в них названы эти папки. Смена папки или установщика в окне переписывает файл; несуществующая папка и установщик без плана не запоминаются. Удалите файл — и первый старт спросит снова. Папка, перетащенная на .cmd-файл, действует только на этот запуск.

config\settings.json — buildMask, маска папок сборок, по умолчанию Audion TC*.

config\builds.json — что собирает секция СБОРКА: набор, название, папка и язык меню по умолчанию.