Distribuzione su Store
Le applicazioni Electron possono essere distribuite in diversi modi: download diretto dal sito web, GitHub Releases, Microsoft Store, Mac App Store e package manager per Linux.
Download Diretto
Il metodo più semplice è ospitare i file di installazione su un sito web o su GitHub Releases.
GitHub Releases
{
"build": {
"publish": [
{
"provider": "github",
"owner": "tuo-username",
"repo": "tuo-repo"
}
]
}
}
# Pubblica automaticamente su GitHub Releases
export GH_TOKEN=ghp_tuoToken
npx electron-builder --publish always
I file distribuibili vengono caricati come asset della release.
Server Personalizzato
{
"build": {
"publish": [
{
"provider": "generic",
"url": "https://download.example.com/releases/"
}
]
}
}
Carica manualmente i file sul server e l’auto-updater li troverà automaticamente.
Microsoft Store
Prerequisiti
- Account sviluppatore Microsoft ($19 una tantum)
- App registrata nel Microsoft Partner Center
- Certificato di firma per APPX
Configurazione
{
"build": {
"appx": {
"identityName": "12345TuoNome.LaMiaApp",
"publisher": "CN=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"publisherDisplayName": "Tuo Nome",
"applicationId": "LaMiaApp",
"backgroundColor": "#1e1e2e"
},
"win": {
"target": "appx"
}
}
}
Build per Microsoft Store
npx electron-builder --win appx
Il file .appx generato può essere caricato nel Microsoft Partner Center.
Mac App Store
Prerequisiti
- Account Apple Developer ($99/anno)
- Certificato “3rd Party Mac Developer Application”
- Certificato “3rd Party Mac Developer Installer”
- Provisioning Profile
Configurazione
{
"build": {
"mac": {
"target": "mas",
"category": "public.app-category.developer-tools",
"entitlements": "entitlements.mas.plist",
"entitlementsInherit": "entitlements.mas.inherit.plist",
"provisioningProfile": "embedded.provisionprofile"
},
"mas": {
"entitlements": "entitlements.mas.plist",
"entitlementsInherit": "entitlements.mas.inherit.plist",
"hardenedRuntime": false
}
}
}
Entitlements per MAS
<!-- entitlements.mas.plist -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>
<key>com.apple.security.files.user-selected.read-write</key>
<true/>
</dict>
</plist>
Build per Mac App Store
npx electron-builder --mac mas
Il file .pkg può essere caricato su App Store Connect con l’Application Loader o Transporter.
Linux: Package Manager
Snap Store
{
"build": {
"linux": {
"target": "snap"
},
"snap": {
"summary": "Descrizione breve della mia app",
"category": "Development",
"confinement": "strict",
"grade": "stable"
}
}
}
npx electron-builder --linux snap
# Pubblica con:
snapcraft upload --release=stable dist/mia-app.snap
Flathub
{
"build": {
"linux": {
"target": "flatpak"
},
"flatpak": {
"runtimeVersion": "23.08",
"baseVersion": "23.08",
"finishArgs": [
"--share=ipc",
"--share=network",
"--socket=x11"
]
}
}
}
AUR (Arch Linux)
Per Arch Linux, crea un PKGBUILD nel repository AUR della tua app.
Pagina di Download
Un pattern comune è creare una pagina di download che rileva la piattaforma:
<!-- download.html (esempio concettuale) -->
<script>
function getPlatform() {
const ua = navigator.userAgent;
if (ua.includes('Win')) return 'windows';
if (ua.includes('Mac')) return 'macos';
if (ua.includes('Linux')) return 'linux';
return 'unknown';
}
const platform = getPlatform();
const downloadLinks = {
windows: 'https://github.com/user/repo/releases/latest/download/app-setup.exe',
macos: 'https://github.com/user/repo/releases/latest/download/app.dmg',
linux: 'https://github.com/user/repo/releases/latest/download/app.AppImage',
};
</script>
Checklist Pre-Distribuzione
Prima di distribuire la tua app:
- Incrementa la versione nel
package.json - Testa su tutte le piattaforme target
- Firma il codice (Windows e macOS)
- Notarizza (macOS)
- Testa l’auto-updater con una release di prova
- Verifica le dimensioni del bundle
- Controlla i permessi e le entitlements
- Aggiorna il changelog / release notes
- Testa l’installazione su un sistema pulito
- Verifica la disinstallazione su Windows
Ridurre le Dimensioni del Bundle
Le app Electron possono essere grandi. Per ridurre le dimensioni:
{
"build": {
"asar": true,
"files": [
"src/**/*",
"!**/*.map",
"!**/node_modules/**/*.md",
"!**/node_modules/**/*.txt",
"!**/node_modules/**/test/**",
"!**/node_modules/**/docs/**"
]
}
}
Altre strategie:
- Usa
npm prune --productionprima della build - Escludi le devDependencies
- Comprimi le risorse (immagini, font)
- Usa code splitting se usi un bundler