papayu/#U0421#U0411#U041e#U0420#U041a#U0410_#U0418_#U041e#U0411#U041d#U041e#U0412#U041b#U0415#U041d#U0418#U042f.md
2026-02-11 22:00:43 +03:00

117 lines
7.5 KiB
Markdown
Raw Permalink 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.

# 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 и путями, заданными выше.