Files
umbrix/update-server/WINDOWS_PORTABLE_ZIP.md
Umbrix Developer b628bfcd82
Some checks failed
CI / run (push) Has been cancelled
feat: Add README and launch script for Windows Portable ZIP
- Add README.txt with clear instructions (first file alphabetically)
- Add 'Запустить Umbrix.bat' for easy launch
- Update WINDOWS_PORTABLE_ZIP.md with file structure explanation
- Users won't be confused which file to run anymore
2026-01-20 11:56:28 +03:00

10 KiB
Raw Blame History

Creating Portable ZIP Update for Windows

Преимущества Portable ZIP

  • Без UAC - не нужны права администратора
  • Без SmartScreen - Windows не показывает предупреждения для ZIP файлов
  • Быстрое обновление - просто заменить файлы
  • Идеально для тестирования без подписи кода
  • Fallback на .exe если .zip не найден

📦 Создание Portable ZIP (на Windows)

Шаг 1: Собрать Release версию

cd "C:\Umbrix\project.exe.umbrix 1.7.3\umbrix"

# Собрать Flutter app
flutter build windows --release

# Результат: build\windows\x64\runner\Release\

Шаг 2: Упаковать в ZIP

# Путь к build папке
$buildPath = "build\windows\x64\runner\Release"

# ✨ НОВОЕ: Добавить файлы для пользователей
Copy-Item "windows\packaging\portable\README.txt" -Destination "$buildPath\" -Force
Copy-Item "windows\packaging\portable\Запустить Umbrix.bat" -Destination "$buildPath\" -Force

# Создать ZIP архив
$zipName = "umbrix-1.7.5-portable-windows-x64.zip"
Compress-Archive -Path "$buildPath\*" -DestinationPath $zipName -Force

# Проверить размер (~50-60MB)
Get-Item $zipName | Select-Object Name, Length

Write-Host "`n✅ ZIP содержит:" -ForegroundColor Green
Write-Host "  • README.txt (инструкция - ПЕРВЫЙ файл в списке)" -ForegroundColor Cyan
Write-Host "  • Запустить Umbrix.bat (удобный запуск)" -ForegroundColor Cyan
Write-Host "  • Umbrix.exe (основное приложение)" -ForegroundColor Yellow
Write-Host "  • UmbrixCli.exe (служебная утилита)" -ForegroundColor Gray
Write-Host "  • Все DLL и папки" -ForegroundColor Gray

Шаг 3: Создать релиз в Gitea

# Создать релиз v1.7.5
$token = "bfe5806ebda0adb22815154c81f25057f02a3dde"
$body = @{
    tag_name = "v1.7.5"
    name = "Umbrix v1.7.5 (Portable Test)"
    body = @"
**Test release with portable ZIP update**

✅ Windows Portable ZIP (no UAC, no SmartScreen!)  
✅ Auto-update test: 1.7.4 → 1.7.5  
✅ EXE installer also available

**Download:**
- **umbrix-1.7.5-portable-windows-x64.zip** - Recommended for testing (no warnings!)
- umbrix-1.7.5-windows-setup-x64.exe - Full installer (requires UAC)
"@
    draft = $false
    prerelease = $false
} | ConvertTo-Json

$response = Invoke-RestMethod -Uri "https://update.umbrix.net/api/v1/repos/vodorod/umbrix/releases" `
  -Method Post `
  -Headers @{"Authorization"="token $token"; "Content-Type"="application/json"} `
  -Body $body

$releaseId = $response.id
Write-Host "Release created with ID: $releaseId"

Шаг 4: Загрузить ZIP

$releaseId = 5  # From previous step
$zipFile = "umbrix-1.7.5-portable-windows-x64.zip"
$token = "bfe5806ebda0adb22815154c81f25057f02a3dde"

# Upload
curl -X POST "https://update.umbrix.net/api/v1/repos/vodorod/umbrix/releases/$releaseId/assets?name=$zipFile" `
  -H "Authorization: token $token" `
  -H "Content-Type: application/zip" `
  --data-binary "@$zipFile"

🧪 Тестирование Auto-Update

1. Установить старую версию (1.7.4)

# Распаковать 1.7.4 в папку
$oldVersion = "C:\Umbrix\Test\umbrix-1.7.4"
Expand-Archive -Path "umbrix-1.7.4-portable-windows-x64.zip" -DestinationPath $oldVersion

# Запустить
cd $oldVersion
.\umbrix.exe

2. Проверить автообновление

Что происходит:

  1. Приложение запускается (версия 1.7.4)
  2. Через 5 секунд: уведомление "Доступна новая версия 1.7.5"
  3. Нажать кнопку "Обновить"
  4. Начинается загрузка umbrix-1.7.5-portable-windows-x64.zip
  5. БЕЗ UAC запроса!
  6. БЕЗ SmartScreen предупреждений!
  7. Показывается toast: "Установка обновления из ZIP..."
  8. ZIP распаковывается в %TEMP%\umbrix_update_xxxxx
  9. Создается batch скрипт для замены файлов
  10. Приложение закрывается
  11. Скрипт ждет 3 секунды, заменяет файлы, запускает приложение
  12. Готово! Версия 1.7.5 запущена

3. Проверить версию

Настройки → О программе → Версия: 1.7.5

🔄 Логика выбора обновления

Приоритет (в коде):

  1. Ищем .zip файл с patterns: portable, windows, win
  2. Если .zip найден → используем ZIP (без UAC!)
  3. Если .zip НЕ найден → fallback на .exe (с UAC)

Пример файлов в релизе:

✅ umbrix-1.7.5-portable-windows-x64.zip  ← Будет использован (приоритет!)
   umbrix-1.7.5-windows-setup-x64.exe    ← Запасной вариант

📂 Структура ZIP архива

umbrix-1.7.5-portable-windows-x64.zip
├── umbrix.exe                  (главный EXE)
├── data/                       (Flutter ресурсы)
│   ├── app.so
│   ├── icudtl.dat
│   └── flutter_assets/
├── flutter_windows.dll         (Flutter engine)
├── libcore.dll                 (VPN core, 45MB)
└── другие .dll файлы

Быстрая команда (все в одном)

cd "C:\Umbrix\project.exe.umbrix 1.7.3\umbrix"

# Собрать
flutter build windows --release

# Упаковать
$version = "1.7.5"
$zipName = "umbrix-$version-portable-windows-x64.zip"
Compress-Archive -Path "build\windows\x64\runner\Release\*" -DestinationPath $zipName -Force

# Проверить
Get-Item $zipName | Select-Object Name, @{N="Size (MB)";E={[math]::Round($_.Length/1MB, 2)}}

<EFBFBD> Структура Portable ZIP (что видят пользователи)

Когда пользователь распакует ZIP, он увидит:

umbrix-portable/
├── 📄 README.txt                          ⭐ ПЕРВЫЙ в списке - инструкция!
├── 🚀 Запустить Umbrix.bat               ⭐ Удобный способ запуска
├── 📱 Umbrix.exe                          ⭐ Основное приложение (267 KB)
├── ⚙️  UmbrixCli.exe                      ⚠️  Служебная утилита (1.8 MB)
├── 1.7.4/                                 📂 Папка с данными
├── data/                                  📂 Ресурсы Flutter
├── dynamic_color_plugin.dll              🔧 DLL плагины
├── flutter_windows.dll                   🔧 Flutter (17 MB)
├── libcore.dll                           🔧 Либкор (45 MB)
└── ...другие DLL...

Почему пользователи не запутаются:

  1. README.txt - первый файл (по алфавиту), ясная инструкция
  2. Запустить Umbrix.bat - второй файл, понятное название
  3. Umbrix.exe с красивой иконкой - визуально выделяется
  4. ⚠️ UmbrixCli.exe - название намекает что это утилита командной строки

<EFBFBD>💡 Советы

Для разработки:

  • Используйте Portable ZIP - быстрее тестировать
  • Нет задержек от UAC и SmartScreen
  • Можно создавать релизы каждые 5 минут

Для production:

  • Portable ZIP для пользователей без админ прав
  • EXE installer для "правильной" установки в Program Files
  • Рекомендуется оба варианта в релизе!

Размеры:

  • Portable ZIP: ~50MB (сжатый)
  • EXE installer: ~60MB (Inno Setup добавляет ~10MB)

🎯 Преимущества двух вариантов

Аспект Portable ZIP EXE Installer
UAC запрос Нет Требуется
SmartScreen Не показывается ⚠️ Показывается (без подписи)
Права админа Не нужны Нужны
Скорость обновления Очень быстро ⏱️ Медленнее
Установка в Program Files Нет Да
Ярлыки в меню Пуск Нет Да
Удаление через "Программы и компоненты" Нет Да
Портативность Да (можно на флешке) Нет

📝 Рекомендации

Для тестирования (БЕЗ подписи кода):

✅ Используйте Portable ZIP
✅ Быстрое тестирование
✅ Нет предупреждений Windows

Для production (С подписью кода):

Оба варианта в релизе
✅ EXE для установки
✅ ZIP для обновлений

Пример релиза:

v1.7.5 - Umbrix Release
├── umbrix-1.7.5-portable-windows-x64.zip (для обновлений)
└── umbrix-1.7.5-windows-setup-x64.exe    (для новых установок)

Итого

Добавлена поддержка Portable ZIP:

  • Код проверяет .zip → fallback на .exe
  • ZIP распаковывается и заменяет файлы
  • Без UAC, без SmartScreen
  • Идеально для тестирования!

Теперь 2 способа обновления на Windows:

  1. Portable ZIP (рекомендуется для тестирования)
  2. EXE Installer (для production)