Files
senboost/electron-builder.yml
T
maeneko ebb9191d6f Версия 0.6.0
Заменяет tpws на utunws (форк nfqws под utun+BPF из Flowseal/zapret-mac-discord-youtube)
на macOS: движок уровня пакетов вместо socks5-прокси даёт macOS те же 22 стратегии
Flowseal, что у Windows и Linux, включая fake-пакеты и десинк UDP/QUIC — раньше tpws
этого не умел вовсе. Обход теперь ставится как LaunchDaemon (resources/darwin-helper/),
пароль администратора спрашивается при каждом включении/выключении, тот же принцип, что
pkexec на Linux. Системный прокси и авто-список hostlist-auto больше не нужны и убраны.

README: Windows отмечена как гарантированно рабочая, macOS и Linux — как частично.
2026-09-04 14:36:52 +03:00

176 lines
9.6 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
appId: com.rknboost.app
productName: RKNboost
directories:
buildResources: build
output: release
# releaseType: release — публиковать релиз сразу, без черновика (draft — поведение по
# умолчанию у electron-builder). С черновиком параллельная загрузка нескольких файлов иногда
# создаёт два черновика с одним и тем же тегом вместо одного релиза.
#
# publishAutoUpdate: false — не заливать latest.yml. Это метаданные для electron-updater,
# которого в приложении нет (обновляется пользователь вручную, скачивая новый инсталлятор
# со страницы релиза) — файл был бы мёртвым грузом в ассетах.
publish:
provider: github
releaseType: release
publishAutoUpdate: false
files:
- '!**/.vscode/*'
- '!src/*'
- '!electron.vite.config.{js,ts,mjs,cjs}'
- '!{.eslintcache,eslint.config.mjs,.prettierignore,.prettierrc.yaml,README.md}'
- '!{.env,.env.*,.npmrc,pnpm-lock.yaml,yarn.lock}'
- '!{tsconfig.json,tsconfig.node.json,tsconfig.web.json}'
- '!.github/*'
# zapret и linux-helper/darwin-helper идут отдельно через extraResources ниже — не
# дублировать их в app.asar.
- '!resources/zapret/**'
- '!resources/linux-helper/**'
- '!resources/darwin-helper/**'
asarUnpack:
- 'resources/**'
# Бинарники zapret (npm run zapret:fetch) кладём рядом с приложением, а не в asar —
# это исполняемые файлы, которые main-процесс запускает через spawn.
#
# Общие для всех платформ куски (списки, fake-пакеты, лицензии zapret/Flowseal) — здесь;
# платформенные бинарники — в extraResources соответствующего раздела (win/mac/linux) ниже.
# extraResources платформы ДОБАВЛЯЕТСЯ к этому списку, а не заменяет его (проверено по
# исходникам electron-builder, app-builder-lib/fileMatcher.js) — так Windows-сборка не везёт
# nfqws и Mach-O tpws, а Linux-сборка не везёт WinDivert и winws.exe.
extraResources:
- from: resources/zapret/lists
to: zapret/lists
- from: resources/zapret/fakes
to: zapret/fakes
- from: resources/zapret
to: zapret
filter:
- 'LICENSE.zapret.txt'
- 'LICENSE.flowseal.txt'
win:
executableName: RKNboost
# Приложение запрашивает права администратора при КАЖДОМ запуске (манифест exe).
# Внимание на компромисс: установка при этом остаётся per-user, то есть exe лежит в
# %LocalAppData%\Programs\RKNboost — папке, доступной на запись обычному пользователю.
# Значит подмена этого exe даёт злоумышленнику администратора с подтверждения самого
# пользователя. Это осознанный выбор владельца проекта; безопасный вариант — вернуть
# perMachine: true, чтобы exe лежал в защищённом от записи Program Files.
requestedExecutionLevel: requireAdministrator
target:
# arm64 не собираем: WinDivert (драйвер для winws — src/main/zapret/engine.win32.ts)
# не имеет подписанной сборки под arm64, только x64 через эмуляцию (docs/windows.md
# в поставке zapret) — arm64-инсталлятор был бы заведомо нерабочим.
- target: nsis
arch: [x64]
extraResources:
- from: resources/zapret/win32
to: zapret/win32
- from: resources/zapret
to: zapret
filter:
- 'LICENSE.WinDivert.txt'
nsis:
# Быстрая установка per-user, без UAC и без мастера: ставится в %LocalAppData%, куда
# обычный пользователь и так пишет без повышения прав. Раньше здесь стоял perMachine —
# это была защита от того, что служба (LocalSystem) ссылалась бы на winws.exe прямо
# в папке установки. Теперь вместо этого при первом включении обхода приложение сама
# копирует winws.exe в защищённый ACL'ом каталог в %ProgramData% (см. applyServiceConfig
# в src/main/zapret/service.win32.ts) — сама установка приложения per-user безопасна.
oneClick: true
perMachine: false
# Без electron-updater (см. publishAutoUpdate выше) differential-обновления не нужны —
# differentialPackage: false отключает генерацию .blockmap, который иначе всегда
# заливался бы в ассеты релиза рядом с инсталлятором.
differentialPackage: false
# Удалять %APPDATA%\rknboost (списки сайтов, метка первого запуска) вместе с приложением.
# По умолчанию electron-builder этого НЕ делает, и данные оставались бы в системе после
# удаления. Обновление приложения под это не попадает — в шаблоне деинсталлятора стоит
# проверка `ifNot isUpdated`, так что отредактированные списки переживают обновление.
deleteAppDataOnUninstall: true
include: build/installer.nsh
artifactName: ${name}-${version}-setup-${arch}.${ext}
shortcutName: ${productName}
uninstallDisplayName: ${productName}
createDesktopShortcut: always
mac:
category: public.app-category.productivity
# utunws (форк nfqws под utun+BPF, см. src/main/zapret/engine.darwin.ts) собран под
# -target …-macos14.0 в самом релизе Flowseal/zapret-mac-discord-youtube — на более
# старой системе он не запустится, минимум объявляем и на уровне инсталлятора.
minimumSystemVersion: '14.0'
target:
- target: dmg
arch: [x64, arm64]
- target: zip
arch: [x64, arm64]
entitlements: build/entitlements.mac.plist
entitlementsInherit: build/entitlements.mac.plist
hardenedRuntime: true
# utunws — сторонний Mach-O внутри .app; hardened runtime требует, чтобы electron-builder
# подписал и его тем же Developer ID, иначе Gatekeeper убьёт процесс при первом spawn.
binaries:
- Contents/Resources/zapret/darwin/utunws
# Подпись и нотаризация выключены: без Apple Developer ID сборка иначе падает.
# Как включить — см. раздел «Подпись» в README.md.
notarize: false
extraResources:
- from: resources/zapret/darwin
to: zapret/darwin
# install.sh/stop.sh/daemon.sh/watchdog.sh/autostart.sh — привилегированные скрипты,
# запускаются через osascript "with administrator privileges" (elevate.darwin.ts).
# Не из resources/zapret: тот качает fetch-zapret.mjs, а этот каталог — свой, лежит
# в репозитории (см. src/main/zapret/paths.ts:bundledDarwinHelperDir()).
- from: resources/darwin-helper
to: darwin-helper
dmg:
artifactName: ${name}-${version}-${arch}.${ext}
linux:
executableName: rknboost
# desktopName в package.json + syncDesktopName — иначе Electron не свяжет открытые окна
# с .desktop-записью (app_id/WM_CLASS), и часть окружений не покажет иконку в панели задач.
syncDesktopName: true
target:
- target: AppImage
arch: [x64]
- target: deb
arch: [x64]
maintainer: RKNboost
category: Network
synopsis: Обход блокировок через zapret
extraResources:
- from: resources/zapret/linux
to: zapret/linux
# rknboost-helper.sh — привилегированный помощник (nfqws.linux.ts зовёт его через
# pkexec). Не из resources/zapret: тот качает fetch-zapret.mjs, а этот файл — свой,
# лежит в репозитории (см. src/main/zapret/paths.ts:bundledHelperPath()).
- from: resources/linux-helper
to: linux-helper
appImage:
artifactName: ${name}-${version}-${arch}.${ext}
deb:
artifactName: ${name}-${version}-${arch}.${ext}
# electron-builder ЗАМЕНЯЕТ этим списком свои дефолтные зависимости Electron, а не
# дополняет их (проверено по исходникам, app-builder-lib/targets/FpmTarget.js) — потерять
# хотя бы одну из первых девяти значило бы получить .deb, который ставится и не запускается.
# nftables и polkit — уже наши, для nfqws/pkexec.
depends:
- libgtk-3-0
- libnotify4
- libnss3
- libxss1
- libxtst6
- xdg-utils
- libatspi2.0-0
- libuuid1
- libsecret-1-0
- nftables
- policykit-1
npmRebuild: false