СТАНДАРТ ВС 2

Стандарт: Именование файлов корпоративного архива ПО
Дата введения: 2026-04-07
Дата ревизии: 2026-04-07


1 Назначение

Настоящий стандарт устанавливает правила формирования унифицированных имён файлов (УИФ) для программного обеспечения, драйверов, утилит, конфигурационных данных, образов операционных систем и спецификаций сборок, используемых в компании А3.

УИФ обеспечивает:

  • однозначную идентификацию файла без обращения к метаданным или sidecar-файлам;
  • детерминированный парсинг имени файла простыми строковыми операциями (split('.'));
  • совместимость с системами автоматического развёртывания (SCCM, PDQ, Ansible, PowerShell);
  • масштабируемость структуры при добавлении новых типов ПО, архитектур и редакций;
  • читаемость человеком при сохранении машинной интерпретируемости.

2 Термины и общие положения

2.1 Унифицированное имя файла (УИФ) — строковое обозначение файла в корпоративном архиве, состоящее из фиксированного набора сегментов, разделённых точками, где каждый сегмент несёт определённую семантическую нагрузку.

2.2 Сегмент УИФ — атомарный элемент имени, отделённый точками, соответствующий одному из предопределённых полей: тип, архитектура, наименование, редакция, версия, язык, расширение.

2.3 Нормализованная версия — представление номера версии, в котором внутренние разделители заменены с точки (.) на дефис (-) для избежания коллизии с разделителями сегментов УИФ.

2.4 Атомарный парсинг — метод извлечения метаданных из имени файла посредством операции split('.') без использования регулярных выражений или внешних манифестов.

2.5 Контекст развёртывания — совокупность условий (ОС, архитектура, группа пользователей), определяющих применимость файла, закодированная в сегментах УИФ.


3 Общие положения

3.1 УИФ применяется ко всем файлам, размещаемым в корпоративном архиве компании А3, включая программы, драйверы, утилиты, конфигурации, документацию, образы операционных систем и спецификации сборок.

3.2 Запись УИФ осуществляется строго в нижнем регистре латинского алфавита, за исключением случаев, когда требуется точное сохранение идентификатора вендора (например, IBM, HP — допускается верхний регистр).

3.3 Разделителем сегментов УИФ является точка (.). Внутри сегментов допускаются только следующие символы: строчные латинские буквы (a–z), цифры (0–9), нижнее подчёркивание (_), дефис (-).

3.4 Поле <версия> обязательно использует дефис (-) в качестве внутреннего разделителя компонентов версии. Точка внутри этого поля запрещена.
Пример: v24-2-1-446, v1-0-0-rc1, v2024-04-15.

3.5 Если в поле <наименование> или <редакция> используется несколько слов, они разделяются нижним подчёркиванием (_).
Пример: yandex_browser, laserjet_pro.

3.6 Расширение файла (.exe, .msi, .zip и т.д.) остаётся неизменным и соответствует реальному формату файла. Псевдорасширения не допускаются.

3.7 УИФ не должен превышать 255 символов для совместимости с файловыми системами Windows и Linux.


4 Структура УИФ

Общий вид структуры УИФ:

<тип>.<arch>.<vendor_product>.<edition>.<version>.<lang>.<ext>

4.1 Описание сегментов

СегментОбязательностьДопустимые значенияПример
1типprg — программа
drv — драйвер
utl — утилита (одноразовая)
cfg — конфигурация/профиль
doc — документация
img — образ ОС
spc — спецификация сборки
prg
2archwin64, win32, winarm, mac, linux, anywin64
3vendor_productСтрока в формате vendor_product, слова через _, без спецсимволовcorel_draw, hp_laserjet_pro
4editionstd, pro, corporate, portable, trial, anycorporate
5versionФормат: v<версия> или YYYY-MM-DD[-BUILD], компоненты версии разделены -v24-2-1-446, v2024-04-15
6langru, en, multiru
7extРеальное расширение файла: exe, msi, zip, iso, json, inf, pdfmsi

4.2 Правила валидации

  • Все сегменты, кроме <version>, не должны содержать точек.
  • <version> должен начинаться с v или YYYY (для дат).
  • Внутри <version> разрешены только цифры и дефисы.
  • <vendor_product> не должен содержать пробелов, точек или дефисов (только _ для разделения слов).
  • <lang> и <arch> должны соответствовать предопределённому справочнику.

4.3 Исключения и особые случаи

  • Для файлов, не имеющих версии (например, шаблоны, статические конфиги), в поле <version> указывается v0 или static.
  • Для мультиязычных пакетов в <lang> указывается multi.
  • Для кроссплатформенных файлов в <arch> указывается any.
  • Для типа img (образ ОС) семантика сегментов 3–4 изменяется (см. п. 5.6).
  • Для типа spc (спецификация) семантика сегментов 3–4 изменяется (см. п. 5.7).

5 Примеры использования

5.1 Программное обеспечение

prg.win64.corel_draw.corporate.v24-2-1-446.ru.msi
prg.win32.adobe_reader.std.v2024-01-15.ru.exe
prg.any.libreoffice.portable.v7-6-4.multi.zip

5.2 Драйверы

drv.win64.hp_laserjet_pro.any.v87-8-33.ru.exe
drv.win32.canon_mf_drivers.std.v5-12-0.ru.msi
drv.any.epson_generic.any.v1-0-0.multi.inf

5.3 Утилиты и инструменты

utl.win64.ccleaner.portable.v6-08-99.multi.zip
utl.win64.antipampersprof.corporate.v2-0-6.ru.exe
utl.any.7zip.portable.v24-06.multi.7z

5.4 Конфигурации и профили

cfg.any.yandex_browser.corporate.v14-2.ru.json
cfg.win64.windows10_hardening.corporate.v2024-03.reg
cfg.any.vscode_settings.dev.v1-85-2.multi.json

5.5 Документация

doc.any.corel_draw_license.corporate.v24-2.ru.pdf
doc.win64.hp_dj500plus_manual.any.v87-8.ru.pdf

5.6 Образы операционных систем

Для типа img структура сегментов:

img.<arch>.<os>.<build_edition>.<version>.<lang>.<ext>
СегментОписаниеПример
1типimg — образ ОСimg
2archАрхитектура процессора: amd64, x86, armamd64
3osОперационная система: windows, linuxwindows
4build_editionРедакция сборки А3: 10_a3_universal, 10_a3_checkout, 10_a3_client, 7_a3_universal10_a3_universal
5versionВерсия сборки: v1, v2026-06-01v1
6langЯзык интерфейсаru
7extРеальное расширение файла образаwim, iso, esd

Примеры:

img.amd64.windows.10_a3_universal.v1.ru.iso
img.amd64.windows.7_a3_universal.v1.ru.wim
img.amd64.windows.10_a3_checkout.v1.ru.iso
img.amd64.windows.10_a3_client.v1.ru.esd

5.7 Спецификации сборок

Для типа spc структура сегментов:

spc.<arch>.<redaction>.<version>.<lang>.<ext>
СегментОписаниеПример
1типspc — спецификация сборкиspc
2archЦелевая архитектураany, win64
3redactionРедакция сборки: 10_a3_universal, 10_a3_checkout, 10_a3_client, 7_a3_universal10_a3_universal
4versionВерсия спецификации в нотации v<ISO8601>v2026-06-01
5langЯзык документаru
6extРеальное расширение файлаmd, pdf, docx

Примечание: Для типа spc поле edition опущено — структура содержит 6 сегментов. Для сохранения 7-сегментной схемы вставьте any в 4-ю позицию:
spc.any.<redaction>.any.<version>.<lang>.<ext>

Примеры:

spc.any.10_a3_universal.v2026-06-01.ru.md
spc.any.10_a3_checkout.v2026-06-09.ru.md
spc.any.7_a3_universal.v2026-07-01.ru.md

6 Приложение

6.1 Справочник допустимых значений

Типы (тип):

КодОписаниеПример сценария
prgПрикладное ПО для установкиОфисные пакеты, графические редакторы
drvДрайверы оборудованияПринтеры, сканеры, сетевые адаптеры
utlУтилиты одноразового запускаОчистка, диагностика, миграция
cfgКонфигурационные файлы, политики, реестрыНастройки браузера, GPO-экспорты
docДокументация, лицензии, инструкцииРуководства, EULA, сканы лицензий
imgОбраз операционной системыWIM/ISO/ESD-файлы установки
spcСпецификация сборкиДокументы с составом редакции

Архитектуры (arch):

КодОписание
win64Windows x64
win32Windows x86
winarmWindows on ARM
macmacOS (универсальный или с уточнением в названии)
linuxLinux (дистрибутив указывается в vendor_product)
anyКроссплатформенный или не зависящий от ОС
amd64Архитектура x86-64 (для образов ОС, тип img)
x86Архитектура x86 (для образов ОС, тип img)
armАрхитектура ARM (для образов ОС, тип img)

Редакции (edition / build_edition):

КодОписание
stdСтандартная редакция
proПрофессиональная / расширенная
corporateКорпоративная сборка с предустановленными настройками
portableПортативная версия, не требующая установки
trialПробная / демонстрационная версия
anyРедакция не применима или универсальна
a3_universalУниверсальная сборка А3 (Клиент/Менеджер)
a3_checkoutСборка А3 для кассы
a3_checkout_extРасширенная сборка А3 для кассы
a3_clientУрезанная сборка А3 — только клиентские места
a3_baseБазовая сборка А3

Языки (lang):

КодОписание
ruРусский интерфейс / документация
enАнглийский
multiМультиязычный пакет или язык не применим

6.2 Алгоритм парсинга УИФ (PowerShell)

function Parse-UiF {
    param([string]$Filename)
    
    $parts = $Filename.Split('.')
    if ($parts.Count -ne 7) {
        throw "Неверное количество сегментов: ожидается 7, получено $($parts.Count)"
    }
    
    return [PSCustomObject]@{
        Type     = $parts[0]
        Arch     = $parts[1]
        Name     = $parts[2]
        Edition  = $parts[3]
        Version  = $parts[4].TrimStart('v')  # "24-2-1-446"
        Language = $parts[5]
        Ext      = $parts[6]
    }
}
 
# Пример:
# Parse-UiF "prg.win64.corel_draw.corporate.v24-2-1-446.ru.msi"
# → Version = "24-2-1-446" (готово к сравнению через -split('-'))

6.3 Скрипт нормализации версии при загрузке

function Normalize-Version {
    param([string]$RawVersion)
    # Преобразует "24.2.1.446" → "v24-2-1-446"
    $clean = $RawVersion -replace '[^\d.]', ''
    $parts = $clean -split '\.' | Where-Object { $_ }
    return 'v' + ($parts -join '-')
}

6.4 Контрольные суммы и манифест

Каждый файл в архиве должен сопровождаться записью в manifest.csv со следующей структурой:

filename,type,arch,version,edition,lang,sha256,silent_args,license_ref,owner,last_verified
prg.win64.corel_draw.corporate.v24-2-1-446.ru.msi,prg,win64,v24-2-1-446,corporate,ru,a1b2c3...,/qn /norestart,LIC-CD-2024,ivanov@corp.ru,2026-04-01

Генерация SHA256:

Get-FileHash -Path ".\file.msi" -Algorithm SHA256 | Select-Object -ExpandProperty Hash

Примечание: Настоящий стандарт является развитием принципов, заложенных в стандарте R 5.1, и специализирован для задач управления корпоративным архивом программного обеспечения. При возникновении коллизий приоритет имеют положения ВС 2 в части именования файлов архива.