Build degli eseguibili da Linux e da Windows: script PowerShell e README

Aggiunge scripts/publish.ps1, equivalente di publish.sh per Windows
PowerShell (5.1 e 7), provato su Windows nativo con SDK 10. Il README
descrive i tre passi (installare l'SDK, lanciare lo script, trovare i file
in dist/) per entrambi i sistemi, il comando dotnet publish senza script e
cosa è stato verificato. CLAUDE.md cita i due script e chiede di tenerli
allineati.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
davideandClaude Sonnet 5.5 committed 2026-10-15 12:17:23 +02:00
1 parent c0c140b08d
commit 99f6105556
3 files changed
+46 -14

No files matched your search

+25 -13
View File
@@ -21,28 +21,40 @@ dotnet run -- --engine codex "spiega questo progetto"
```
## Creare gli eseguibili (Windows e Linux)
Ogni eseguibile è un **unico file** che include il runtime .NET: chi lo usa non deve installare nulla. Serve solo il .NET SDK 10 sulla macchina che compila, e si può compilare per l'altro sistema (da Linux/WSL si crea anche il `.exe` per Windows).
Ogni eseguibile è un **unico file** che include il runtime .NET: chi lo usa non deve installare nulla. Per crearlo serve solo il .NET SDK 10 sulla macchina che compila, e **da ciascun sistema si creano entrambi gli eseguibili** (da Windows anche quello per Linux, e viceversa).
**Entrambi in un colpo** (Linux, WSL, macOS):
```
scripts/publish.sh
```
Risultato:
### 1. Installare il .NET SDK 10
- **Windows** (PowerShell o Prompt dei comandi): `winget install Microsoft.DotNet.SDK.10`, oppure il programma di installazione da [dotnet.microsoft.com/download](https://dotnet.microsoft.com/download).
- **Linux / WSL / macOS**: pacchetto della distribuzione o script ufficiale da [dotnet.microsoft.com/download](https://dotnet.microsoft.com/download).
- Controllo: `dotnet --version` deve stampare `10.x`.
| Sistema | File | Dimensione |
### 2. Creare gli eseguibili
Dalla cartella del progetto.
| Sistema | Comando | Scelta del sistema di destinazione |
|---|---|---|
| Windows x64 | `dist/win-x64/agent-wiki-ui.exe` | circa 48 MB |
| Linux x64 | `dist/linux-x64/agent-wiki-ui` | circa 48 MB |
| **Linux, WSL, macOS** (bash) | `scripts/publish.sh` | `scripts/publish.sh linux-x64` |
| **Windows** (PowerShell) | `.\scripts\publish.ps1` | `.\scripts\publish.ps1 win-x64` |
Con argomenti si sceglie il sistema: `scripts/publish.sh linux-x64`. Altri identificatori (per esempio `win-arm64`, `linux-arm64`) si possono provare allo stesso modo, ma non sono verificati.
Senza argomenti si creano entrambi. Su Windows, se PowerShell rifiuta di eseguire lo script (criteri di esecuzione): `powershell -ExecutionPolicy Bypass -File .\scripts\publish.ps1`.
**A mano** (anche da PowerShell su Windows, stessi comandi):
Risultato (circa 47 MB per file), in `dist/`, ignorata da git:
| Sistema | File |
|---|---|
| Windows x64 | `dist/win-x64/agent-wiki-ui.exe` |
| Linux x64 | `dist/linux-x64/agent-wiki-ui` |
Altri identificatori (per esempio `win-arm64`, `linux-arm64`) si possono provare allo stesso modo, ma non sono verificati. Lo script è solo una comodità: il comando sotto fa la stessa cosa.
**Senza script** (identico su qualsiasi sistema; sostituisci `<rid>` con `win-x64` o `linux-x64`):
```
dotnet publish -c Release -r win-x64 --self-contained -p:PublishSingleFile=true -o dist/win-x64
dotnet publish -c Release -r linux-x64 --self-contained -p:PublishSingleFile=true -o dist/linux-x64
dotnet publish -c Release -r <rid> --self-contained -p:PublishSingleFile=true -o dist/<rid>
```
Senza `-o` il risultato è in `bin/Release/net10.0/<rid>/publish/`.
Verificato: da Linux/WSL entrambi gli eseguibili; da Windows nativo (PowerShell 5.1, SDK 10.0.203) entrambi, e il `.exe` creato parte.
**Usarli**
- Windows: doppio clic su `agent-wiki-ui.exe` per la GUI (non si apre nessuna finestra di console), oppure da terminale `agent-wiki-ui.exe "prompt"` per la CLI. Da `cmd` o PowerShell il prompt torna subito e l'output compare dopo; per aspettare la fine e leggere l'exit code usa `start /wait agent-wiki-ui.exe "prompt"` (cmd) o `Start-Process -Wait -NoNewWindow agent-wiki-ui.exe "prompt"` (PowerShell); `& .\agent-wiki-ui.exe "prompt" | Out-Host` aspetta ma non dà l'exit code. Spiegazione in [ADR-0005](docs/adr/0005-windows-senza-console.md). Il file non è firmato: Windows può mostrare un avviso di sicurezza al primo avvio.
- Linux: `chmod +x agent-wiki-ui` (se serve) e poi `./agent-wiki-ui`. La GUI richiede un desktop con X11 o XWayland.