Some checks failed
CI / run (push) Has been cancelled
- 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
10 KiB
10 KiB
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.7.4)
- Через 5 секунд: уведомление "Доступна новая версия 1.7.5"
- Нажать кнопку "Обновить"
- Начинается загрузка
umbrix-1.7.5-portable-windows-x64.zip - ✅ БЕЗ UAC запроса!
- ✅ БЕЗ SmartScreen предупреждений!
- Показывается toast: "Установка обновления из ZIP..."
- ZIP распаковывается в
%TEMP%\umbrix_update_xxxxx - Создается batch скрипт для замены файлов
- Приложение закрывается
- Скрипт ждет 3 секунды, заменяет файлы, запускает приложение
- ✅ Готово! Версия 1.7.5 запущена
3. Проверить версию
Настройки → О программе → Версия: 1.7.5
🔄 Логика выбора обновления
Приоритет (в коде):
- Ищем .zip файл с patterns: portable, windows, win
- Если .zip найден → используем ZIP (без UAC!)
- Если .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...
Почему пользователи не запутаются:
- ✅ README.txt - первый файл (по алфавиту), ясная инструкция
- ✅ Запустить Umbrix.bat - второй файл, понятное название
- ✅ Umbrix.exe с красивой иконкой - визуально выделяется
- ⚠️ 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:
- Portable ZIP (рекомендуется для тестирования)
- EXE Installer (для production)