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

285 lines
10 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"
# ✨ НОВОЕ: Добавить файлы для пользователей
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
```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)}}
```
---
## <20> Структура 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** - название намекает что это утилита командной строки
---
## <20>💡 Советы
**Для разработки:**
- ✅ Используйте 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)