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/буква) и группировка — сейчас иконка приложения.
|
- **Аватары в уведомлениях** (thumb/буква) и группировка — сейчас иконка приложения.
|
||||||
- **Захват экрана и микрофон**: разрешения macOS выдаёт webview, отдельных
|
- **Захват экрана и микрофон**: разрешения macOS выдаёт webview, отдельных
|
||||||
экранов-инструкций у обёртки нет.
|
экранов-инструкций у обёртки нет.
|
||||||
- **Developer ID и нотаризация** macOS, EV/Trusted Signing для Windows — только
|
- **Подпись и нотаризация macOS — сознательно не делаются** (решение владельца
|
||||||
в CI с платными сертификатами (ниже — точные команды).
|
26.09.2026): приложение распространяется неподписанным `.dmg`, карантин
|
||||||
|
снимает конечный пользователь (инструкция ниже). EV/Trusted Signing для
|
||||||
|
Windows — тем же решением не делаем.
|
||||||
- **`.dmg`**: собирается из обычного терминала (Finder/AppleScript для раскладки
|
- **`.dmg`**: собирается из обычного терминала (Finder/AppleScript для раскладки
|
||||||
окна); в песочнице агента `hdiutil create` и AppleScript запрещены, но образ
|
окна); в песочнице агента `hdiutil create` и AppleScript запрещены, но образ
|
||||||
**без оформления окна** собирается флагом `--sandbox-safe` к `bundle_dmg.sh`
|
**без оформления окна** собирается флагом `--sandbox-safe` к `bundle_dmg.sh`
|
||||||
(проверено 2026-09-26, см. ниже).
|
(проверено 2026-09-26, см. ниже).
|
||||||
- **Windows/Linux-бандлы**: конфигурация кросс-платформенная, но собирались и
|
- **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` (для автообновления) собираются где угодно:
|
Артефакты без `.dmg` (для автообновления) собираются где угодно:
|
||||||
`make desktop-build-app`.
|
`make desktop-build-app`.
|
||||||
|
|
||||||
### macOS: подпись Developer ID и нотаризация
|
### macOS: подпись Developer ID и нотаризация — сознательно не делаем
|
||||||
|
|
||||||
Нужны сертификат Developer ID Application в связке ключей и пароль приложения
|
**Решение владельца (2026-09-26): подпись Developer ID и нотаризацию не
|
||||||
(appleid.apple.com → App-Specific Passwords):
|
делаем** — это платный аккаунт 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
|
```bash
|
||||||
security find-identity -v -p codesigning # проверить наличие сертификата
|
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
|
spctl --assess --type execute --verbose=4 desktop/src-tauri/target/release/bundle/macos/glchat.app
|
||||||
```
|
```
|
||||||
|
|
||||||
Переменные читает сам Tauri (`APPLE_*`), в репозиторий они не попадают.
|
|
||||||
Проверка «не подписано»: `codesign -dv --verbose=4 <app>` покажет `Signature=adhoc`.
|
Проверка «не подписано»: `codesign -dv --verbose=4 <app>` покажет `Signature=adhoc`.
|
||||||
|
|
||||||
### Windows (x64): MSI/NSIS + подпись
|
### Windows (x64): MSI/NSIS + подпись
|
||||||
|
|||||||
Reference in New Issue
Block a user