> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devin.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Supporto per Windows

> Esegui Devin su Windows con blueprint e sessioni.

Devin supporta Windows come piattaforma per build e sessioni. Gli ambienti Windows utilizzano la stessa shell bash (Git Bash) di Linux, quindi la maggior parte dei comandi dei blueprint funziona su entrambe le piattaforme senza modifiche.

<Warning>
  Il supporto per Windows è attualmente disponibile su base limitata. Se vuoi provare Windows con Devin, [contattaci](https://cognition.com/contact) per saperne di più e ottenere l'accesso.
</Warning>

<div id="how-it-works">
  ## Come funziona
</div>

Il supporto per Windows si basa sullo stesso sistema di [configurazione dichiarativa](/it/onboard-devin/environment/blueprints) usato da Linux. La differenza principale è il campo `runs-on` nel blueprint, che indica a Devin su quale piattaforma eseguire build e run.

Poiché entrambe le piattaforme usano bash, puoi scrivere gli stessi comandi shell sia su Linux sia su Windows. Le principali differenze riguardano il layout del file system e i gestori di pacchetti disponibili:

| Aspetto              | Linux (predefinito)   | Windows                                    |
| -------------------- | --------------------- | ------------------------------------------ |
| Directory home       | `/home/ubuntu`        | `/c/Users/Administrator`                   |
| Directory della repo | `~/repos/<repo-name>` | `/c/Users/Administrator/repos/<repo-name>` |
| Gestore di pacchetti | `apt-get`             | `choco` o installer diretti                |

<div id="writing-windows-blueprints">
  ## Scrivere blueprint per Windows
</div>

<div id="single-platform-blueprint">
  ### Blueprint per una sola piattaforma
</div>

Se il repository è destinato solo a Windows, usa `runs-on: windows` al livello superiore:

```yaml theme={null}
runs-on: windows

initialize:
  - name: "Install Node.js"
    uses: github.com/actions/setup-node@v4
    with:
      node-version: "20"

  - name: "Install build tools"
    run: |
      choco install visualstudio2022buildtools -y
      choco install python --version=3.12 -y

maintenance: |
  npm install

knowledge:
  - name: lint
    contents: npm run lint
  - name: test
    contents: npm test
  - name: build
    contents: npm run build
```

<div id="multi-platform-blueprint">
  ### Blueprint multipiattaforma
</div>

Per eseguire la build dello stesso repository sia su Linux sia su Windows, scrivi ogni piattaforma come un documento YAML separato da `---`. Ogni documento dichiara la propria label `runs-on`. Per un approfondimento su questo formato, consulta il riquadro [Multi-document YAML](/it/onboard-devin/environment/blueprints#blueprint-sections) nella guida ai blueprint.

```yaml theme={null}
runs-on: default
initialize: |
  curl -LsSf https://astral.sh/uv/install.sh | sh
  apt-get update && apt-get install -y build-essential

maintenance: |
  uv sync

knowledge:
  - name: test
    contents: uv run pytest

---
runs-on: windows
initialize: |
  choco install python --version=3.12 -y

maintenance: |
  uv sync

knowledge:
  - name: test
    contents: uv run pytest
```

Ogni documento produce una snapshot build separata per la relativa piattaforma. Le sessioni si avviano dallo snapshot specifico della piattaforma.

<Warning>
  Lo YAML di primo livello deve essere una mappatura, non una sequenza. Se l'esempio sopra viene scritto come un'unica lista (`- runs-on: default` / `- runs-on: windows`), il backend lo rifiuta con `Invalid YAML: each YAML document must be a mapping, not a sequence; use '---' to separate multiple blocks`. Usa il separatore `---` mostrato sopra.
</Warning>

<div id="the-runs-on-field">
  ## Il campo `runs-on`
</div>

Il campo `runs-on` fa riferimento a una configurazione di macchina registrata nel tuo account:

| Valore              | Piattaforma                     |
| ------------------- | ------------------------------- |
| `default` o `linux` | Linux (piattaforma predefinita) |
| `windows`           | Windows                         |

Puoi specificare `runs-on` come stringa o come elenco:

```yaml theme={null}
# Piattaforma singola
runs-on: windows

# Più piattaforme in un blocco (gli stessi comandi vengono eseguiti su ciascuna)
runs-on: [default, windows]
```

Quando un blocco elenca più piattaforme, il sistema di build crea uno snapshot per ciascuna piattaforma utilizzando gli stessi comandi.

<Warning>
  La sintassi con elenco esegue gli stessi comandi su ogni piattaforma dell'elenco. Usala solo quando i comandi sono davvero multipiattaforma (ad es. `npm install`, `uv sync`). Per i comandi specifici di una piattaforma (come `apt-get` su Linux o `choco` su Windows), usa invece il [formato multi-documento](#multi-platform-blueprint): un documento per ogni piattaforma, separato da `---`.
</Warning>

<div id="usage-and-cost">
  ## Utilizzo e costi
</div>

Le sessioni Windows comportano un utilizzo (ACU o quota) circa **del 9% superiore** rispetto a sessioni Linux equivalenti. Per maggiori dettagli su come viene misurato l'utilizzo, vedi [Utilizzo](/it/admin/billing/usage#windows-sessions).

<div id="windows-session-behavior">
  ## Comportamento della sessione in Windows
</div>

<div id="shell">
  ### Shell
</div>

Le sessioni Windows usano **Git Bash** come shell predefinita, la stessa shell bash usata su Linux. La sintassi bash standard funziona su entrambe le piattaforme:

```yaml theme={null}
- run: |
    export MY_VAR="hello"
    echo $MY_VAR
```

<div id="paths">
  ### Percorsi
</div>

In Windows si usa il formato dei percorsi di Git Bash (`/c/...` invece di `C:\...`):

```yaml theme={null}
# Percorsi Linux
- run: cp config.json ~/.config/myapp/config.json

# Percorsi Windows (formato Git Bash)
- run: cp config.json /c/Users/Administrator/.config/myapp/config.json
```

<div id="secrets">
  ### Segreti
</div>

I segreti sono disponibili come variabili d'ambiente durante le sessioni, utilizzando la sintassi bash standard (`$SECRET_NAME`):

```yaml theme={null}
maintenance:
  - name: "Configure registry"
    run: |
      npm config set //registry.npmjs.org/:_authToken $NPM_TOKEN
```

<div id="file-attachments">
  ### File allegati
</div>

Su Windows, i file caricati vengono salvati in `/c/Users/Administrator/.files/` anziché in `/home/ubuntu/.files/`.

<div id="computer-use">
  ### Computer Use
</div>

[Computer Use](/it/work-with-devin/computer-use) è pienamente supportato nelle sessioni Windows. Devin dispone di un ambiente desktop Windows con accesso a Chrome, mouse e tastiera, quindi può testare app web e applicazioni desktop native di Windows (ad es. app WPF e WinForms) e registrare le proprie sessioni di testing.

<div id="blueprint-tips-for-windows">
  ## Suggerimenti su Blueprint per Windows
</div>

<div id="installing-tools">
  ### Installazione dei tool
</div>

Usa `choco` (Chocolatey) o script di download diretto:

```yaml theme={null}
initialize:
  - name: "Install Chocolatey packages"
    run: |
      choco install git -y
      choco install nodejs-lts -y
      choco install python --version=3.12 -y
      choco install dotnet-sdk -y
```

<div id="common-patterns">
  ### Pattern comuni
</div>

**Progetto .NET:**

```yaml theme={null}
runs-on: windows

initialize:
  - name: "Install .NET SDK"
    run: |
      choco install dotnet-sdk -y

maintenance: |
  dotnet restore

knowledge:
  - name: build
    contents: dotnet build
  - name: test
    contents: dotnet test
  - name: lint
    contents: dotnet format --verify-no-changes
```

**Progetto Visual Studio / C++:**

```yaml theme={null}
runs-on: windows

initialize:
  - name: "Install Visual Studio Build Tools"
    run: |
      choco install visualstudio2022buildtools -y
      choco install visualstudio2022-workload-vctools -y

maintenance: |
  msbuild /t:Restore MySolution.sln

knowledge:
  - name: build
    contents: msbuild MySolution.sln /p:Configuration=Release
  - name: test
    contents: vstest.console.exe bin/Release/Tests.dll
```
