From 4615b1da510b3703f6567534b536d4f1d6916421 Mon Sep 17 00:00:00 2001 From: Umbrix Developer Date: Tue, 20 Jan 2026 10:56:16 +0300 Subject: [PATCH] docs: Add Windows Portable ZIP update guide Complete documentation for creating portable ZIP updates: - No UAC prompts needed - No SmartScreen warnings - Perfect for testing without code signing - Fallback to EXE installer if ZIP not available - Step-by-step build and release instructions --- update-server/WINDOWS_PORTABLE_ZIP.md | 247 ++++++++++++++++++++++++++ 1 file changed, 247 insertions(+) create mode 100644 update-server/WINDOWS_PORTABLE_ZIP.md diff --git a/update-server/WINDOWS_PORTABLE_ZIP.md b/update-server/WINDOWS_PORTABLE_ZIP.md new file mode 100644 index 00000000..381cdd7f --- /dev/null +++ b/update-server/WINDOWS_PORTABLE_ZIP.md @@ -0,0 +1,247 @@ +# Creating Portable ZIP Update for Windows + +## ✅ Преимущества Portable ZIP + +- **Без UAC** - не нужны права администратора +- **Без SmartScreen** - Windows не показывает предупреждения для ZIP файлов +- **Быстрое обновление** - просто заменить файлы +- **Идеально для тестирования** без подписи кода +- **Fallback на .exe** если .zip не найден + +--- + +## 📦 Создание Portable ZIP (на Windows) + +### Шаг 1: Собрать Release версию + +```powershell +cd "C:\Umbrix\project.exe.umbrix 1.7.3\umbrix" + +# Собрать Flutter app +flutter build windows --release + +# Результат: build\windows\x64\runner\Release\ +``` + +### Шаг 2: Упаковать в ZIP + +```powershell +# Путь к build папке +$buildPath = "build\windows\x64\runner\Release" + +# Создать 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 +``` + +### Шаг 3: Создать релиз в Gitea + +```powershell +# Создать релиз 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 + +```powershell +$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) + +```powershell +# Распаковать 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 файлы +``` + +--- + +## ⚡ Быстрая команда (все в одном) + +```powershell +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)}} +``` + +--- + +## 💡 Советы + +**Для разработки:** +- ✅ Используйте 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)