117 lines
7.5 KiB
Markdown
117 lines
7.5 KiB
Markdown
# PAPA YU — сборка DMG и обновления
|
||
|
||
## Единые пути и связи
|
||
|
||
| Назначение | Значение |
|
||
|------------|----------|
|
||
| Репозиторий | `https://github.com/yrippert-maker/papayu` |
|
||
| Обновления (endpoint) | `https://github.com/yrippert-maker/papayu/releases/latest/download/latest.json` |
|
||
| Установка приложения (macOS) | `/Applications/PAPA YU.app` (рекомендуется) |
|
||
| Данные приложения | Системная папка приложения (Tauri `app_data_dir`) — не зависит от $HOME |
|
||
| Логотип в проекте | `desktop/src-tauri/icons/icon_source.png`, `desktop/ui/public/logo-papa-yu.png` |
|
||
| Путь проекта при сборке | Задаётся переменной `PAPAYU_PROJECT_ROOT`; по умолчанию `$HOME/PAPA-YU` |
|
||
|
||
Конфиг: `desktop/src-tauri/tauri.conf.json` (пути сборки, `plugins.updater.endpoints`). Чтобы сборка работала из другого каталога, задайте `export PAPAYU_PROJECT_ROOT=/путь/к/PAPA-YU` перед `cargo tauri dev` или `cargo tauri build`.
|
||
|
||
---
|
||
|
||
## Сборка DMG (один запускающий файл)
|
||
|
||
Из корня проекта (или из `desktop/src-tauri`):
|
||
|
||
```bash
|
||
cd ~/PAPA-YU/desktop/src-tauri
|
||
cargo tauri build
|
||
```
|
||
|
||
Результат на macOS:
|
||
- **.app:** `desktop/src-tauri/target/release/bundle/macos/PAPA YU.app`
|
||
- **.dmg:** `desktop/src-tauri/target/release/bundle/dmg/` (если targets включают dmg)
|
||
|
||
Только DMG:
|
||
|
||
```bash
|
||
cargo tauri build --bundles dmg
|
||
```
|
||
|
||
Пользователь открывает DMG → перетаскивает «PAPA YU» в «Программы» → запускает приложение. Дальнейшие изменения — через кнопку обновления в приложении.
|
||
|
||
---
|
||
|
||
## Кнопка обновления (новый логотип)
|
||
|
||
В интерфейсе рядом с логотипом PAPA YU есть кнопка с иконкой логотипа и стрелкой загрузки. По нажатию:
|
||
1. Проверяется наличие новой версии по GitHub Releases.
|
||
2. При наличии — скачивание и установка, затем перезапуск приложения.
|
||
|
||
Единая точка входа для обновлений — эта кнопка; пути и URL заданы в конфиге.
|
||
|
||
---
|
||
|
||
## Подписание обновлений (обязательно для updater)
|
||
|
||
**Ключи (публичный и приватный) вы получаете из команды генерации, указанной ниже.** Публичный ключ вставляется в конфиг; приватный — хранится локально и в GitHub Secrets для подписи релизов.
|
||
|
||
---
|
||
|
||
### Как сгенерировать ключи
|
||
|
||
**Один блок команд** (выполните в **терминале** — команда запросит пароль для защиты ключа; можно нажать Enter для пустого пароля):
|
||
|
||
```bash
|
||
mkdir -p ~/.tauri
|
||
cd ~/PAPA-YU/desktop/src-tauri
|
||
cargo tauri signer generate -w ~/.tauri/papayu.key
|
||
```
|
||
|
||
В проекте нет Tauri CLI в npm, поэтому используется **`cargo tauri signer generate`** из каталога `desktop/src-tauri` (нужен установленный Rust и Cargo). При запросе пароля введите свой или нажмите Enter для пустого пароля.
|
||
|
||
После выполнения в консоль будет выведен **публичный ключ** — скопируйте его целиком для шага «Вставить публичный ключ» ниже. Приватный ключ сохранится в `~/.tauri/papayu.key`.
|
||
|
||
---
|
||
|
||
**По шагам:**
|
||
|
||
1. **Создайте каталог для ключа** (опционально):
|
||
```bash
|
||
mkdir -p ~/.tauri
|
||
```
|
||
|
||
2. **Перейдите в каталог Tauri и запустите генерацию ключей** (обязательно в **интерактивном терминале** — команда запросит пароль):
|
||
```bash
|
||
cd ~/PAPA-YU/desktop/src-tauri
|
||
cargo tauri signer generate -w ~/.tauri/papayu.key
|
||
```
|
||
Флаг `-w` (или `--write-keys`) задаёт файл, **куда будет записан приватный ключ**. Путь `~/.tauri/papayu.key` — пример; можно использовать свой (например `./papayu.key` в репозитории, но тогда не коммитьте этот файл).
|
||
|
||
3. **Результат команды:**
|
||
- В консоль выведется **публичный ключ** — длинная строка, обычно начинается с `dW50cnVzdGVk...` или похожего (base64).
|
||
- **Приватный ключ** сохраняется в файл, указанный в `-w` (например `~/.tauri/papayu.key`). Этот файл никому не передавайте и не добавляйте в репозиторий.
|
||
|
||
4. **Куда подставить ключи:**
|
||
- **Публичный ключ** — в `desktop/src-tauri/tauri.conf.json` в блоке `plugins.updater.pubkey` (замените заглушку `REPLACE_WITH_PUBLIC_KEY_AFTER_tauri_signer_generate` на выведенную строку целиком).
|
||
- **Приватный ключ** — для локальной подписи передаётся через переменную окружения `TAURI_SIGNING_PRIVATE_KEY` или через файл `-w`. Для GitHub Actions добавьте содержимое файла `~/.tauri/papayu.key` в секрет репозитория с именем `TAURI_SIGNING_PRIVATE_KEY`.
|
||
|
||
**Проверка:** после подстановки публичного ключа в конфиг пересоберите приложение и опубликуйте релиз с подписью; кнопка «Проверить обновления» в приложении должна перестать выдавать ошибку подписи.
|
||
|
||
---
|
||
|
||
Обновления должны быть подписаны. Один раз:
|
||
|
||
1. Сгенерировать ключи (см. раздел «Как сгенерировать ключи» выше).
|
||
|
||
2. Вставить публичный ключ в `desktop/src-tauri/tauri.conf.json`:
|
||
```json
|
||
"plugins": {
|
||
"updater": {
|
||
"endpoints": ["https://github.com/yrippert-maker/papayu/releases/latest/download/latest.json"],
|
||
"pubkey": "ВАШ_ПУБЛИЧНЫЙ_КЛЮЧ"
|
||
}
|
||
}
|
||
```
|
||
Сейчас в конфиге стоит заглушка `REPLACE_WITH_PUBLIC_KEY_AFTER_tauri_signer_generate` — замените на ключ из шага 1.
|
||
|
||
3. При сборке релиза подписывать артефакты приватным ключом (переменная `TAURI_SIGNING_PRIVATE_KEY` или `-w ~/.tauri/papayu.key`). Для GitHub Releases можно использовать [tauri-action](https://github.com/tauri-apps/tauri-action) с опцией подписания и публикации `latest.json`.
|
||
|
||
После этого кнопка обновления будет работать с единым endpoint и путями, заданными выше.
|