00
:
00
:
00
:
00
Corso SEO AI - Usa SEOEMAIL al checkout per il 30% di sconto

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

  1. Account sviluppatore Microsoft ($19 una tantum)
  2. App registrata nel Microsoft Partner Center
  3. 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

  1. Account Apple Developer ($99/anno)
  2. Certificato “3rd Party Mac Developer Application”
  3. Certificato “3rd Party Mac Developer Installer”
  4. 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:

  1. Incrementa la versione nel package.json
  2. Testa su tutte le piattaforme target
  3. Firma il codice (Windows e macOS)
  4. Notarizza (macOS)
  5. Testa l’auto-updater con una release di prova
  6. Verifica le dimensioni del bundle
  7. Controlla i permessi e le entitlements
  8. Aggiorna il changelog / release notes
  9. Testa l’installazione su un sistema pulito
  10. 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 --production prima della build
  • Escludi le devDependencies
  • Comprimi le risorse (immagini, font)
  • Usa code splitting se usi un bundler