docs(desktop): решение владельца — без подписи и нотаризации, Windows/Linux позже через GitHub Actions
- .dmg распространяется неподписанным; инструкция для конечного пользователя (правый клик → «Открыть» или снятие карантина xattr) — в README - хеш и путь текущего установщика 0.1.1 - сборки Windows/Linux отложены: репозиторий в Gitea, раннеры есть у GitHub Actions; локальная часть (desktop-check, desktop-release --target) готова
This commit is contained in:
+36
-7
@@ -357,14 +357,21 @@ python3 scripts/desktop-perf.py --runs 3 # 3 холодных старта +
|
||||
- **Аватары в уведомлениях** (thumb/буква) и группировка — сейчас иконка приложения.
|
||||
- **Захват экрана и микрофон**: разрешения macOS выдаёт webview, отдельных
|
||||
экранов-инструкций у обёртки нет.
|
||||
- **Developer ID и нотаризация** macOS, EV/Trusted Signing для Windows — только
|
||||
в CI с платными сертификатами (ниже — точные команды).
|
||||
- **Подпись и нотаризация macOS — сознательно не делаются** (решение владельца
|
||||
26.09.2026): приложение распространяется неподписанным `.dmg`, карантин
|
||||
снимает конечный пользователь (инструкция ниже). EV/Trusted Signing для
|
||||
Windows — тем же решением не делаем.
|
||||
- **`.dmg`**: собирается из обычного терминала (Finder/AppleScript для раскладки
|
||||
окна); в песочнице агента `hdiutil create` и AppleScript запрещены, но образ
|
||||
**без оформления окна** собирается флагом `--sandbox-safe` к `bundle_dmg.sh`
|
||||
(проверено 2026-09-26, см. ниже).
|
||||
- **Windows/Linux-бандлы**: конфигурация кросс-платформенная, но собирались и
|
||||
проверялись только macOS-arm64.
|
||||
проверялись только macOS-arm64. Сборки под другие ОС **отложены**: репозиторий
|
||||
живёт в Gitea на мини-ПК, а `windows-latest`/`ubuntu-24.04`-раннеры есть у
|
||||
GitHub Actions, поэтому владелец зеркалит проект в GitHub позже и запускает
|
||||
сборку там. Локальная часть готова и проверена: `make desktop-check`,
|
||||
`scripts/desktop-release.sh --artifact … --target windows|linux` (манифест
|
||||
обновления для каждой платформы складывается в общий файл версии).
|
||||
|
||||
## Что осталось оператору (точные команды)
|
||||
|
||||
@@ -404,10 +411,33 @@ hdiutil verify glchat_0.1.0_aarch64.dmg
|
||||
Артефакты без `.dmg` (для автообновления) собираются где угодно:
|
||||
`make desktop-build-app`.
|
||||
|
||||
### macOS: подпись Developer ID и нотаризация
|
||||
### macOS: подпись Developer ID и нотаризация — сознательно не делаем
|
||||
|
||||
Нужны сертификат Developer ID Application в связке ключей и пароль приложения
|
||||
(appleid.apple.com → App-Specific Passwords):
|
||||
**Решение владельца (2026-09-26): подпись Developer ID и нотаризацию не
|
||||
делаем** — это платный аккаунт Apple Developer, а приложение распространяется
|
||||
внутри своего круга. Распространяется **неподписанный** `.dmg`; действия при
|
||||
первом запуске выполняет конечный пользователь (ниже). Подпись артефакта
|
||||
обновления (ed25519, ключ инстанса) от этого не зависит и проверяется всегда —
|
||||
её отсутствие или порча артефакта установку отменяют.
|
||||
|
||||
Что делает конечный пользователь (короткая инструкция, её же можно передать
|
||||
вместе с файлом):
|
||||
|
||||
1. Открыть `.dmg` и перетащить `glchat` в `Applications`.
|
||||
2. Первый запуск — **правый клик по приложению → «Открыть» → «Открыть»** в
|
||||
диалоге «разработчик не может быть проверен». Дальше приложение запускается
|
||||
обычным двойным кликом.
|
||||
3. Если macOS не показывает кнопку «Открыть» (карантин): в терминале
|
||||
`xattr -dr com.apple.quarantine /Applications/glchat.app`, либо «Системные
|
||||
настройки → Конфиденциальность и безопасность → Всё равно открыть».
|
||||
|
||||
Текущий установщик релиза 0.1.1:
|
||||
`desktop/src-tauri/target/release/bundle/dmg/glchat_0.1.1_aarch64.dmg`
|
||||
(3,1 МБ, sha256 `7f93609164dc5fdfe6255b88eaf909c02ba819a7e4fb79951cc50b142da825c0`).
|
||||
Собирается `make desktop-build` (или `bundle_dmg.sh --sandbox-safe` в headless).
|
||||
|
||||
Если однажды понадобится подпись, команды остаются прежними (переменные читает
|
||||
сам Tauri, в репозиторий они не попадают):
|
||||
|
||||
```bash
|
||||
security find-identity -v -p codesigning # проверить наличие сертификата
|
||||
@@ -420,7 +450,6 @@ xcrun stapler validate desktop/src-tauri/target/release/bundle/macos/glchat.app
|
||||
spctl --assess --type execute --verbose=4 desktop/src-tauri/target/release/bundle/macos/glchat.app
|
||||
```
|
||||
|
||||
Переменные читает сам Tauri (`APPLE_*`), в репозиторий они не попадают.
|
||||
Проверка «не подписано»: `codesign -dv --verbose=4 <app>` покажет `Signature=adhoc`.
|
||||
|
||||
### Windows (x64): MSI/NSIS + подпись
|
||||
|
||||
Reference in New Issue
Block a user