fix(update): disable differential download for Gitea generic feed (Range 400)
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -77,6 +77,7 @@ function registerUpdaterHandlers(register: RegisterFn, licenseService: LicenseSe
|
|||||||
/**
|
/**
|
||||||
* Проверка обновлений: только упакованное приложение, только при активной лицензии.
|
* Проверка обновлений: только упакованное приложение, только при активной лицензии.
|
||||||
* Канал и URL задаются при сборке (`publish` → `app-update.yml` внутри установки).
|
* Канал и URL задаются при сборке (`publish` → `app-update.yml` внутри установки).
|
||||||
|
* Дифференциальное скачивание (HTTP Range / blockmap) по умолчанию **выключено**: за nginx у Gitea raw часто **400** на multi-Range, updater всё равно уходит в полный файл. Включить снова: **`DND_UPDATE_ENABLE_DIFFERENTIAL=1`** (имеет смысл только если на сервере починили Range).
|
||||||
*/
|
*/
|
||||||
export function installAutoUpdater(licenseService: LicenseService, register: RegisterFn): void {
|
export function installAutoUpdater(licenseService: LicenseService, register: RegisterFn): void {
|
||||||
registerUpdaterHandlers(register, licenseService);
|
registerUpdaterHandlers(register, licenseService);
|
||||||
@@ -89,6 +90,15 @@ export function installAutoUpdater(licenseService: LicenseService, register: Reg
|
|||||||
autoUpdater.setFeedURL({ provider: 'generic', url });
|
autoUpdater.setFeedURL({ provider: 'generic', url });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Дифференциальное обновление (multi-Range по blockmap) часто ломается на Gitea raw за nginx (HTTP 400);
|
||||||
|
// electron-updater тогда и так падает на полный файл — отключаем лишний шум и лишний round-trip.
|
||||||
|
const enableDiff = process.env.DND_UPDATE_ENABLE_DIFFERENTIAL?.trim().toLowerCase();
|
||||||
|
autoUpdater.disableDifferentialDownload = !(
|
||||||
|
enableDiff === '1' ||
|
||||||
|
enableDiff === 'true' ||
|
||||||
|
enableDiff === 'yes'
|
||||||
|
);
|
||||||
|
|
||||||
autoUpdater.autoDownload = true;
|
autoUpdater.autoDownload = true;
|
||||||
autoUpdater.autoInstallOnAppQuit = true;
|
autoUpdater.autoInstallOnAppQuit = true;
|
||||||
|
|
||||||
|
|||||||
@@ -325,6 +325,8 @@ sudo journalctl -u gitea-act-runner -f
|
|||||||
- **Базовый дистрибутив для бинарников:** сборка на **Ubuntu 22.04 (glibc 2.35)** — совместимость с «максимумом» настольных дистрибутивов с glibc не старее целевого; **Alpine/musl** без отдельной сборки не гарантируется.
|
- **Базовый дистрибутив для бинарников:** сборка на **Ubuntu 22.04 (glibc 2.35)** — совместимость с «максимумом» настольных дистрибутивов с glibc не старее целевого; **Alpine/musl** без отдельной сборки не гарантируется.
|
||||||
- **Запуск AppImage:** на части систем нужен **FUSE** (например `libfuse2` для старых форматов / документация дистрибутива). Подпись пакетов в первом варианте **не** используется (как договорённость по проекту).
|
- **Запуск AppImage:** на части систем нужен **FUSE** (например `libfuse2` для старых форматов / документация дистрибутива). Подпись пакетов в первом варианте **не** используется (как договорённость по проекту).
|
||||||
- Правила **electron-updater** в приложении те же: упакованная сборка и **активная лицензия** (`installAutoUpdater.ts`).
|
- Правила **electron-updater** в приложении те же: упакованная сборка и **активная лицензия** (`installAutoUpdater.ts`).
|
||||||
|
- **Дифференциальное обновление** (запросы с несколькими HTTP `Range` по blockmap) на **Gitea raw** за nginx часто даёт **`400 Bad Request`** (`content-length: 18` — короткий текст ошибки); updater переходит на **полную** загрузку — обновление всё равно доходит. В коде по умолчанию **`disableDifferentialDownload: true`**, чтобы не делать лишний шаг (меньше шума в логе). Включить дифф снова: переменная **`DND_UPDATE_ENABLE_DIFFERENTIAL=1`** при запуске приложения — имеет смысл только если на сервере разрешили корректные Range / multi-range для raw.
|
||||||
|
- Сообщения вида **`duplicated in blockmap`** в консоли — предупреждение electron-updater, на работоспособность обычно не влияют.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user