Winget: uno script per installare programmi automaticamente in Windows 10

Presentiamo un nostro script PowerShell per effettuare l'installazione automatica delle applicazioni che servono in Windows 10 e Windows 11.

A maggio 2021 Microsoft ha pubblicato la versione finale del suo Windows Package Manager (winget), un’utilità avviabile da riga di comando che aiuta a installare una vasta schiera di programmi di utilizzo comune in Windows 10 e in Windows 11.
Windows Package Manager è davvero potente e permette di installare e aggiornare automaticamente i programmi Windows, sia quelli Win32 che quelli del Microsoft Store.

In questa pagina di supporto Microsoft presenta un semplice file batch che consente di richiedere l’installazione di una serie di programmi Windows, l’uno dopo l’altro.

Traendo ispirazione dall’idea di Microsoft abbiamo voluto realizzare un semplice script PowerShell che dapprima verifica qual è la versione più aggiornata del pacchetto Microsoft Desktop App Installer contenente anche Windows Package Manager e disponibile su GitHub quindi provvede a scaricarla in locale e a installare automaticamente winget.

Al termine dell’installazione è possibile richiedere il download e l’installazione dei programmi che si ritengono più utili sia in Windows 10 che in Windows 11.

Come installare programmi in automatico con un semplice script PowerShell per Windows 10 e Windows 11

Lo script scaricabile a questo indirizzo consente di configurare il download e l’installazione di Windows Package Manager quindi di procedere con l’installazione dei software d’interesse senza alcun intervento da parte dell’utente.

Per utilizzare lo script è sufficiente estrarre il contenuto dell’archivio winget_windows10-11.zip (sono due file: uno .cmd e l’altro .ps1) in una cartella di propria scelta quindi cliccare due volte sul file Default.cmd fornendo i necessari diritti amministrativi.
Alla comparsa della schermata PC protetto da Windows si deve fare clic sul link Ulteriori informazioni e infine sul pulsante Esegui comunque.

Lo script provvede dapprima a scaricare e installare Windows Package Manager quindi procede con l’installazione dei programmi in automatico, senza nulla chiedere all’utente.

Prima di fare doppio clic sul file Default.cmd, suggeriamo di aprire il file installer.ps1 con un normale editor di testo (Blocco Note di Windows o Notepad++) quindi modificare quanto presente in corrispondenza delle ultime righe.

Così come viene proposto, il nostro script provvede a scaricare e installare i seguenti programmi dai siti ufficiali: 7-Zip, Google Chrome e Notepad++.

Togliendo il simbolo del commento (#) dalle altre righe che iniziano per #winget install lo script installerà automaticamente in Windows 10 o Windows 11 programmi Microsoft Teams e Recuva.

Ovviamente si tratta di esempi: è possibile richiedere l’installazione di qualunque altro programma supportato da winget (per ottenerne la lista completa, basta digitare winget search al prompt dei comandi).

Nello script suggeriamo di richiamare sempre i programmi che si vogliono installare in Windows usando la sintassi winget install seguito dell’identificativo che viene riportato nella colonna Id.
In questo modo non si avranno mai problemi con i programmi che contengono spazi nel nome; in fondo allo script installer.ps1 si possono aggiungere quante righe si vogliono e creare la propria routine di installazione personalizzata.

Richiamiamo l’attenzione sul fatto che alcuni programmi prevedono l’accettazione delle condizioni di licenza: in quei casi, per evitare che lo script si blocchi per chiedere conferma all’utente, suggeriamo di aggiungere le opzioni --accept-package-agreements --accept-source-agreements.
L’abbiamo fatto ad esempio nel caso dell’installazione di Google Chrome:

winget install Google.Chrome --accept-package-agreements --accept-source-agreements

Per alcuni programmi, viceversa, potrebbe essere invece consigliato usare la cosiddetta modalità interattiva. Per impostazione predefinita, infatti, winget installa le applicazioni usando la configurazione di default prevista da ciascun sviluppatore in modo tale da non far comparire messaggi e finestre di dialogo.
Per non accettare le impostazioni predefinite per l’installazione del software si può aggiungere --interactive. Ad esempio, nel caso di Recuva:

winget install --id Recuva --interactive

Aggiungendo anche l’opzione --scope machine si può fare in modo che un programma venga installato per tutti gli account utente configurati sulla macchina Windows e non sia utilizzabile solo dall’account correntemente in uso.

Come funziona lo script in breve

Infine due parole sul funzionamento complessivo dello script per scaricare e installare programmi in Windows (file installer.ps1).

All’avvio lo script verifica la versione di Windows 10 o Windows 11 in uso: sono supportate tutte le più recenti versioni del sistema operativo (dalla release 1909 in avanti).

Le successive righe dello script sono di immediata comprensione: dapprima viene letto il contenuto del file in formato JSON disponibile a questo indirizzo su GitHub quindi si provvede a scaricare la versione più recente del pacchetto Desktop App Installer leggendo l’informazione visualizzata in corrispondenza di “tag_name“.

A seconda della versione di Windows in uso (a 64 o 32 bit) lo script provvede a scaricare le librerie Visual C++ Runtime dai server Microsoft in modo da evitare la comparsa dell’errore “Non è possibile installare il pacchetto Microsoft.DesktopAppInstaller_1.10.42241.0_x64__8wekyb3d8bbwe perché questo pacchetto dipende da un framework non trovato. Specifica il framework “Microsoft.VCLibs.140.00“.

Al termine di tutte queste operazioni viene finalmente disposta l’installazione dei programmi desiderati con l’utilità winget come visto in precedenza.

Abbiamo visto come velocizzare Windows 11 e ottimizzare il sistema con uno script che permette di applicare tutta una serie di personalizzazioni.
Nel file win_optimize.bat, immediatamente prima della riga echo Premere un tasto per riavviare il sistema ... si può aggiungere quanto segue per attivare lo script PowerShell per l’installazione dei programmi che servono:

echo Installazione WinGet e programmi utili
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0Installer.ps1"

Ovviamente il file batch win_optimize.bat e lo script PowerShell installer.ps1 dovranno essere memorizzati nella stessa cartella. Inoltre, il file win_optimize.bat deve essere avviato con i diritti di amministratore cliccandovi con il tasto destro del mouse e scegliendo Esegui come amministratore.

In un altro articolo abbiamo visto come creare un supporto d’installazione del sistema operativo (ISO personalizzata) con una routine basata su Chocolatey.
Per installare automaticamente i programmi in Windows 10 e Windows 11 alla conclusione della procedura d’installazione lo script appena presentato potrebbe essere un degno sostituto.

Ti consigliamo anche

Link copiato negli appunti