| icons | ||
| web | ||
| .gitignore | ||
| capacitor.config.json | ||
| electron-builder.json | ||
| main.js | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| README2.md | ||
MacOS con Capacitor Electon
creare un foder
inizializza Capacitor
npm install @capacitor/core @capacitor/cli
npx cap init "MyApps" "it.patachina.myapps" --web-dir=web
inserisci in name il nome che vuoi x es MyApps
in id xesemoio it.patachina.myapps
in Web asset directory metti web (la dir dove si trova il file statico)
aggiungi Electon
npm install @capacitor-community/electron electron
npx cap add @capacitor-community/electron
copia il file statico nella cartella web
per esempio
/web/index.html
/web/style.css
/web/app.js
build e sync
npx cap sync
avvia l'app macOS per testare se funziona
npx cap open @capacitor-community/electron
crea il pacchetto .app
npm install electron-builder --save-dev
modifica il tuo package.json inserendo alla fine
"scripts": {
"electron:build": "electron-builder -c electron-builder.json"
}
oppure per una versione più semplice
"scripts": {
"electron:build": "electron-builder"
}
inserisci anche i campi name,version,description,author,main
inoltre
"electron": "^39.2.7"
deve essere in devDependencies non dependencies il file deve diventare
{
"name": "MyApps",
"version": "1.0.0",
"description": "Cross-platform launcher built with Capacitor and Electron",
"author": "Fabio",
"main": "electron/main.js",
"dependencies": {
"@capacitor-community/electron": "^5.0.1",
"@capacitor/cli": "^7.4.4",
"@capacitor/core": "^8.0.0"
},
"devDependencies": {
"electron": "^39.2.7",
"electron-builder": "^26.0.12"
},
"scripts": {
"electron:build": "electron-builder -c electron-builder.json"
}
}
nella root aggiungi il file electron-builder.json
{
"appId": "it.fabio.myapps",
"productName": "MyApps",
"directories": {
"output": "dist-electron"
},
"files": [
"electron/**/*",
"web/**/*"
],
"mac": {
"category": "public.app-category.productivity",
"icon": "electron/assets/casina.icns",
"identity": null,
"hardenedRuntime": false,
"gatekeeperAssess": false,
"notarize": false
},
"win": {
"target": "nsis"
},
"linux": {
"target": "AppImage"
}
}
visti i tempi lunghi di certificazione solo quando va bene puoi modificare in
"identity": "MyCustomCert",
vedi sotto come creare la MyCustomCert
copiare casina.icns (macos vuole solo quella estensione)
cp icons/casina.icns electron/assets/
in electron/assets/
creare in electron il file main.js
nano electron/main.js
e inserire
// electron/main.js
const { app, BrowserWindow } = require('electron');
const path = require('path');
function createWindow() {
const win = new BrowserWindow({
width: 1200,
height: 800,
webPreferences: {
preload: path.join(__dirname, 'preload.js')
}
});
win.loadFile(path.join(__dirname, '../web/index.html'));
}
app.whenReady().then(() => {
createWindow();
app.on('activate', () => {
if (BrowserWindow.getAllWindows().length === 0) createWindow();
});
});
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') app.quit();
});
ora puoi builare
npm run electron:build
Genera chiave privata + certificato con estensioni Code Signing
openssl req -x509 -nodes -days 365 \
-newkey rsa:2048 \
-keyout mycert.key \
-out mycert.crt \
-config codesign.cnf
Unisci chiave + certificato in un PEM
cat mycert.key mycert.crt > mycert.pem
Importa nel portachiavi login
security import mycert.pem -k ~/Library/Keychains/login.keychain-db -A
```
rendere il certificato attendibile per la firma codice
1️⃣ Apri Accesso Portachiavi
Applicazioni → Utility → Accesso Portachiavi
2️⃣ Colonna sinistra → seleziona login
3️⃣ Colonna centrale → vai su I miei certificati
4️⃣ Fai doppio clic su MyCustomCert
5️⃣ Vai nella sezione Attendibilità
6️⃣ Imposta:
👉 Quando si usa questo certificato: Considera sempre attendibile
7️⃣ Chiudi la finestra
macOS ti chiede la password → conferma.