papayu/СБОРКА_И_ОБНОВЛЕНИЯ.md
2026-01-29 12:21:43 +03:00

7.5 KiB
Raw Blame History

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):

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:

cargo tauri build --bundles dmg

Пользователь открывает DMG → перетаскивает «PAPA YU» в «Программы» → запускает приложение. Дальнейшие изменения — через кнопку обновления в приложении.


Кнопка обновления (новый логотип)

В интерфейсе рядом с логотипом PAPA YU есть кнопка с иконкой логотипа и стрелкой загрузки. По нажатию:

  1. Проверяется наличие новой версии по GitHub Releases.
  2. При наличии — скачивание и установка, затем перезапуск приложения.

Единая точка входа для обновлений — эта кнопка; пути и URL заданы в конфиге.


Подписание обновлений (обязательно для updater)

Ключи (публичный и приватный) вы получаете из команды генерации, указанной ниже. Публичный ключ вставляется в конфиг; приватный — хранится локально и в GitHub Secrets для подписи релизов.


Как сгенерировать ключи

Один блок команд (выполните в терминале — команда запросит пароль для защиты ключа; можно нажать Enter для пустого пароля):

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. Создайте каталог для ключа (опционально):

    mkdir -p ~/.tauri
    
  2. Перейдите в каталог Tauri и запустите генерацию ключей (обязательно в интерактивном терминале — команда запросит пароль):

    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:

    "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 с опцией подписания и публикации latest.json.

После этого кнопка обновления будет работать с единым endpoint и путями, заданными выше.