Files
umbrix/update-server/WINDOWS_PORTABLE_ZIP.md
Umbrix Developer 4615b1da51 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
2026-01-20 10:56:16 +03:00

248 lines
7.9 KiB
Markdown
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.
# 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)