AppMint Installer
Installer Windows offline per AppMint
AppMint Installer è il tool di setup ufficiale per AppMint, fratello dell'Inno Setup di Dex Installer ma dedicato alla suite Mint. Bundle Windows completamente offline: porta con sé Node.js 20 LTS (MSI silent), Python 3.12 (EXE silent, opzionale per il sidecar), NSSM per la gestione del servizio Windows, e tutti i `node_modules` di AppMint pre-installati con `npm install --omit=dev`. Il setup.exe finale è autosufficiente — installa AppMint anche su un server appena formattato senza connessione internet.
Il wizard espone 6 pagine personalizzate (oltre alle classiche Welcome / License / Ready / Finish di Inno Setup):
1. **Prerequisiti** — informativa sui requisiti del target (Windows 10/11 o Server 2019+).
2. **Cartelle** — `ADMIN_DB_DIR` (DB admin + sessions + .secret-key), `LOGS_ROOT`, `SCRIPTS_ROOT`. Default: sotto `%PROGRAMDATA%\AppMint`, fuori dalla cartella codice cosi` un re-deploy non perde i dati.
3. **Porte** — porta HTTP (default 3100) + opzionale HTTPS nativo con cert/key path.
4. **Servizio Windows** — nome servizio NSSM, autostart al boot, scelta `NODE_ENV=development` o `production`.
5. **Funzionalità** — toggle Python sidecar (per regole Form Builder server-side), retention dei log, lingua di default IT/EN, embeddings KB (Ollama / OpenAI / disabilitati).
6. **Log installazione** — output live in tempo reale di `npm install`, `npm run init-db`, registrazione NSSM e avvio servizio.
Dopo il wizard l'esecuzione post-install fa: install di Node MSI silent se mancante; install di Python EXE silent se sidecar abilitato e Python non presente; `generate-env.ps1` legge la config raccolta e produce un `.env` completo con `SESSION_SECRET` random; `deploy.ps1` esegue `npm install` (idempotente: salta se i `node_modules` sono già nello staging), poi `npm run init-db` (crea schema admin + utente `admin/admin` con `must_change_password=1`), poi chiama `deploy-service.bat` con i flag `/skipenv /skipinstall /skipinitdb /yes` per registrare il servizio Windows. Avvia il servizio se richiesto e apre `http://localhost:<port>` nel browser di default.
La **disinstallazione** dal Pannello di Controllo (o `uninst000.exe`) invoca `undeploy.ps1` che ferma e rimuove il servizio NSSM via `undeploy-service.bat`, poi Inno Setup cancella la cartella `{app}\` con il codice. **NON tocca** `ADMIN_DB_DIR` né `LOGS_ROOT`: i dati restano per backup o reinstallazioni successive (puoi cancellarli a mano se proprio vuoi un reset completo).
Idempotente: rilanciando il setup.exe sopra un'installazione esistente, il wizard pre-popola le scelte dal `.env` corrente e re-deploya solo le parti che cambiano. Il build dell'installer richiede Inno Setup 6 + Node 18+ in PATH e si lancia con `Build-Installer.ps1`, che copia i sorgenti AppMint in staging, esegue `npm install --omit=dev`, e produce `dist\AppMint-Setup-X.Y.Z.exe` (~150-300 MB).
Funzionalità
- Bundle 100% offline (Node 20 MSI + Python 3.12 EXE + NSSM + tutte le node_modules embedded)
- Wizard a 6 pagine custom (Prerequisiti / Cartelle / Porte / Servizio / Funzionalità / Log)
- Output live di npm install / init-db / NSSM register direttamente nella pagina log
- Generazione automatica .env con SESSION_SECRET random + chiave AES-256-GCM
- Detect e install silent di Node MSI se mancante sul target
- Detect e install silent di Python EXE se sidecar abilitato
- Servizio Windows registrato via NSSM con autostart configurabile
- Scelta NODE_ENV: development (HTTP locale) o production (richiede HTTPS)
- HTTPS nativo opzionale con cert/key path da .env
- Embeddings KB configurabili: Ollama / OpenAI / disabilitati
- Sidecar Python toggle per regole Form Builder server-side
- Cartelle dati separate dal codice (default %PROGRAMDATA%\AppMint)
- Disinstallazione che preserva ADMIN_DB_DIR e LOGS_ROOT
- Idempotente — re-run aggiorna solo cio` che cambia
- Build via Build-Installer.ps1 con override (-SourcePath, -SkipNpmInstall, -SkipDeps)
- Verifica automatica deps\ prima del build con messaggi d'errore puntuali
Parametrizzazioni
- Cartelle: ADMIN_DB_DIR / LOGS_ROOT / SCRIPTS_ROOT
- Porta HTTP (default 3150 — scelto per evitare conflitti con AppMint standalone su 3100)
- Porta HTTPS opzionale + path cert/key
- Nome servizio Windows NSSM
- Autostart al boot (sì/no)
- NODE_ENV: development | production
- Sidecar Python on/off
- Retention log (giorni)
- Lingua di default: IT | EN
- Embeddings KB: Ollama (URL+model) | OpenAI (api_key) | disabilitati
Pre-requisiti tecnici
- Windows 10 / 11 x64 oppure Windows Server 2019+
- Privilegi amministratore (per registrare il servizio NSSM e aprire le porte firewall)
- ~500 MB di spazio disco per AppMint + node_modules
- Per il build dell'installer: Inno Setup 6 + Node.js 18+ + PowerShell 5.1+
- Per il build: file in deps\ (nssm.exe + node-v20*.msi + python-3.12*.exe se sidecar)
- Internet NON richiesto sul target di destinazione