Skip to content

Distribution

lalBi94 edited this page Nov 11, 2026 · 3 revisions

Distribution

Dépôt et licence

  • Dépôt unique : lalBi94/Sapphire3.
  • Sources sur master, paquets en assets de GitHub Releases.
  • Dernière préversion : 0.1.0-beta.9.
  • Site public sur la branche gh-pages, publié séparément sur GitHub Pages.
  • Licence MIT (LICENSE), incluse dans les paquets et l’installateur.

Construire

pnpm dist:win        # ZIP portable Windows
pnpm dist:installer  # ZIP Windows + installateur Inno Setup
pnpm dist:linux      # archives Linux x64 et ARM64
pnpm dist:mac        # bundle macOS universel
pnpm dist:all        # Windows, Linux et macOS

pnpm dist:installer nécessite ISCC.exe (Inno Setup 6 ou 7) sur la machine de construction, pas sur les postes utilisateurs. La construction du sidecar Discord demande CMake, Zig et Ninja.

Contenu Windows :

Sapphire3.exe
discord-presence.exe
resources.neu
updater.ps1
VERSION.txt
CREDITS.md
LICENSE.txt
LIRE-MOI.txt
README.txt
licenses/

Les archives Linux contiennent Sapphire3, discord-presence, resources.neu, les notices et les icônes hicolor. Le bundle macOS contient Sapphire 3.app avec le binaire universel, discord-presence-x64, discord-presence-arm64, resources.neu et Info.plist.

Installateur

  • Installation par utilisateur dans %LOCALAPPDATA%\Programs\Sapphire 3.
  • Aucun droit administrateur.
  • Page de licence, avertissement si WebView2 manque.
  • Raccourcis menu Démarrer, bureau optionnel.
  • Désinstallation sans toucher aux workspaces, préférences ni récupération.

Signature Authenticode

La chaîne est prête, mais aucun certificat n’est fourni. Sans certificat, le paquet est explicitement non signé. macOS n’est pas notarié.

$env:SAPPHIRE_SIGN_PFX = 'C:\certificats\sapphire3.pfx'
$env:SAPPHIRE_SIGN_PASSWORD = '...'
pnpm dist:installer

Variables : SAPPHIRE_SIGN_PFX, SAPPHIRE_SIGN_PASSWORD, SAPPHIRE_SIGN_THUMBPRINT, SAPPHIRE_TIMESTAMP_URL, SIGTOOL_PATH, ISCC_PATH.

Sont signés : Sapphire3.exe avant le ZIP, puis l’installateur. scripts/sign-windows.ps1 vérifie avec Get-AuthenticodeSignature et échoue si la chaîne n’est pas valide.

Un certificat neuf peut conserver un avertissement SmartScreen le temps d’établir sa réputation. Ce n’est pas un défaut de signature.

Release

  1. Mettre à jour package.json et les notes dans docs/releases/.
  2. pnpm test, pnpm build, pnpm dist:all, puis pnpm dist:installer.
  3. Vérifier les archives, les licences, resources.neu, les permissions Unix et les SHA-256.
  4. Créer une release GitHub en brouillon avec le tag v<version> et les cinq assets : ZIP Windows, installateur, Linux x64, Linux ARM64 et macOS universel.
  5. Vérifier la release distante, les tailles et les SHA-256.
  6. Publier en pré-release après validation explicite.

Le site se publie séparément : copier abstract/ à la racine de la branche gh-pages, conserver .nojekyll, index.html, visual/, ARCHITECTURE_AST.tex et ARCHITECTURE_AST.pdf, puis pousser. Une publication du site ne pousse pas master et ne crée pas de release.

Mise à jour intégrée

L’application consulte les releases publiées du dépôt configuré. Après confirmation :

  • téléchargement de l’archive ;
  • vérification taille + SHA-256 ;
  • fermeture de l’application ;
  • remplacement des seuls fichiers distribués par updater.ps1 ;
  • relance.

Les données, préférences et fichiers utilisateur ne sont jamais remplacés. Les erreurs réseau ne bloquent pas les fonctionnalités hors ligne.

Limites

  • Aucun second dépôt ni manifeste update.json.
  • Pas de mise à jour silencieuse.
  • Les builds et exécutables ne sont jamais commités.
  • Linux et macOS sont construits mais non testés à l’exécution ; l’installation des mises à jour y reste manuelle.

Clone this wiki locally