docs(release): macOS first-launch unlock for the unsigned .app #102

Merged
marco merged 1 commit from chore/macos-first-launch-doc into main 2026-07-20 06:28:08 +02:00
Owner

Cosa

Il client macOS scaricato dava "IsoMmo è danneggiata" al primo avvio. Causa reale (diagnosticata sull'artefatto rc1): il .NET SDK firma ad-hoc solo l'apphost come eseguibile standalone, quindi il bundle .app resta senza sigillo _CodeSignature/CodeResources valido → codesign --verify --deep --strict fallisce → su download in quarantena macOS dice "damaged". Non è risolvibile in CI (linux, niente codesign nativo; rcodesign non sigilla i .dll managed di .NET).

Scelta (owner): documentare lo sblocco una-tantum, mantenendo il bundle .app.

  • client/IsoMmo.Client/macos/COME-APRIRE.txt — istruzioni che viaggiano dentro lo zip osx accanto all'app: xattr -cr IsoMmo.app + codesign --force --deep --sign - IsoMmo.app, poi doppio-click (verificato: rende l'app "valid on disk, satisfies its Designated Requirement").
  • release.yaml: copia il txt nello staging osx prima dello zip.
  • docs/deploy.md: nota corretta (la precedente "right-click Open / xattr" era insufficiente — mancava il re-sign).

Nessun cambio di codice/protocollo. dotnet build 0 warning.

## Cosa Il client macOS scaricato dava **"IsoMmo è danneggiata"** al primo avvio. Causa reale (diagnosticata sull'artefatto rc1): il .NET SDK firma ad-hoc **solo l'apphost** come eseguibile standalone, quindi il *bundle* `.app` resta senza sigillo `_CodeSignature/CodeResources` valido → `codesign --verify --deep --strict` fallisce → su download in quarantena macOS dice "damaged". Non è risolvibile in CI (linux, niente `codesign` nativo; `rcodesign` non sigilla i .dll managed di .NET). Scelta (owner): documentare lo sblocco una-tantum, mantenendo il bundle `.app`. - `client/IsoMmo.Client/macos/COME-APRIRE.txt` — istruzioni che **viaggiano dentro lo zip osx** accanto all'app: `xattr -cr IsoMmo.app` + `codesign --force --deep --sign - IsoMmo.app`, poi doppio-click (verificato: rende l'app "valid on disk, satisfies its Designated Requirement"). - `release.yaml`: copia il txt nello staging osx prima dello zip. - `docs/deploy.md`: nota corretta (la precedente "right-click Open / xattr" era insufficiente — mancava il re-sign). Nessun cambio di codice/protocollo. `dotnet build` 0 warning.
docs(release): macOS first-launch unlock steps for the unsigned .app
All checks were successful
ci / Lint & Test (pull_request) Successful in 1m27s
da1108b862
The .app is unsigned (Linux CI, no notarization); the SDK ad-hoc-signs only the
apphost, leaving the bundle seal invalid, so macOS reports 'damaged'. Ship the
one-time unlock (xattr + deep ad-hoc codesign) as COME-APRIRE.txt inside the osx
zip and document it in deploy.md.
marco merged commit ba9e6176d1 into main 2026-07-20 06:28:08 +02:00
marco deleted branch chore/macos-first-launch-doc 2026-07-20 06:28:08 +02:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
marco/IsoMmo!102
No description provided.