Creare il manifesto del pacchetto
Per inviare un pacchetto software al repository della community di Gestione pacchetti Windows, iniziare creando un manifesto del pacchetto. Il manifesto è un file YAML che descrive l'applicazione da installare.
È possibile usare Manifest Creator di Gestione pacchetti di Windows, lo script PowerShell YAMLCreate oppure creare un manifesto manualmente seguendo le istruzioni riportate di seguito.
Nota
Per informazioni generali più generali su manifesti, pacchetti e versioni, vedere le domande frequenti sul manifesto di seguito.
Opzioni per la creazione del manifesto
Uso dell'utilità WinGetCreate
È possibile installare l'utilità wingetcreate
usando il comando seguente.
winget install wingetcreate
Dopo l'installazione, è possibile eseguire wingetcreate new
per creare un nuovo pacchetto e compilare le richieste. L'ultima opzione nei prompt di WinGetCreate consiste nell'inviare il manifesto al repository dei pacchetti. Se si sceglie di sì, si invierà automaticamente la richiesta pull (PR) al repository della community di Gestione pacchetti di Windows.
Uso di YAMLCreate.ps1
Per facilitare la creazione di file manifesto, è stato fornito uno script powershell YAMLCreate.ps1 che si trova nella cartella Strumenti nel repository della community di Gestione pacchetti di Windows. È possibile usare lo script clonando il repository nel PC ed eseguendo lo script direttamente dalla cartella Strumenti. Lo script richiederà l'URL per il programma di installazione, quindi chiederà di compilare i metadati. Analogamente all'uso di WinGetCreate, questo script offrirà la possibilità di inviare automaticamente il manifesto.
Informazioni di base su YAML
Per i manifesti del pacchetto è stato scelto il formato YAML, in quanto garantisce una relativa facilità di leggibilità e la coerenza con altri strumenti di sviluppo Microsoft. Se non hai familiarità con la sintassi YAML, puoi apprendere le nozioni di base in Apprendere YAML in Y minuti.
Nota
I manifesti per Gestione pacchetti di Windows attualmente non supportano tutte le funzionalità YAML. Le funzionalità YAML non supportate includono ancoraggi, chiavi complesse e set.
Convenzioni
Convenzioni usate in questo articolo:
- A sinistra di
:
è presente una parola chiave letterale usata nelle definizioni del manifesto. - A destra di
:
è presente un tipo di dati. Il tipo di dati può essere un tipo primitivo, ad esempio string, o un riferimento a una struttura avanzata definita altrove in questo articolo. - La notazione
[
datatype]
indica una matrice del tipo di dati indicato. Ad esempio,[ string ]
è una matrice di stringhe. - La notazione
{
datatype:
datatype}
indica un mapping di un tipo di dati a un altro. Ad esempio,{ string: string }
è un mapping di stringhe a stringhe.
Contenuto del manifesto
Un manifesto del pacchetto è composto da elementi necessari e facoltativi che consentono di migliorare l'esperienza del cliente per l'installazione del software. In questa sezione viene fornito un breve riepilogo dello schema del manifesto necessario e degli schemi di manifesto completi, con esempi per ognuno di essi.
Ogni campo nel file manifesto deve essere espresso in notazione Pascal e non può essere duplicato.
Per un elenco completo e le descrizioni degli elementi in un manifesto, vedere la specifica del manifesto nel repository della community di Gestione pacchetti Windows.
Schema minimo necessario
Come specificato nello schema JSON singleton, sono necessari solo determinati campi. Il file YAML minimo supportato sarà simile all'esempio seguente. Il formato singleton è valido solo per i pacchetti contenenti un singolo programma di installazione e una singola impostazione locale. Se sono disponibili più programmi di installazione o impostazioni locali, è necessario usare il formato e lo schema di file YAML multipli.
Lo schema di partizionamento è stato aggiunto per facilitare l'esperienza utente di GitHub. Le cartelle con migliaia di elementi figlio non eseguono il rendering corretto nel browser.
PackageIdentifier: # Publisher.package format.
PackageVersion: # Version numbering format.
PackageLocale: # BCP 47 format (e.g. en-US)
Publisher: # The name of the publisher.
PackageName: # The name of the application.
License: # The license of the application.
ShortDescription: # The description of the application.
Installers:
- Architecture: # Enumeration of supported architectures.
InstallerType: # Enumeration of supported installer types (exe, msi, msix, inno, wix, nullsoft, appx).
InstallerUrl: # Path to download installation file.
InstallerSha256: # SHA256 calculated from installer.
ManifestType: # The manifest file type
ManifestVersion: 1.6.0
File manifesto multipli
Per offrire un'esperienza utente ottimale, i manifesti devono contenere il maggior numero possibile di metadati. Per separare i problemi relativi alla convalida dei programmi di installazione e per fornire di metadati localizzati, i manifesti devono essere suddivisi in più file. Il numero minimo di file YAML per questo tipo di manifesto è tre. È necessario specificare anche impostazioni locali aggiuntive.
- Un file di versione (Schema JSON).
- File delle impostazioni locali (Schema JSON) predefinite.
- File di installazione (Schema JSON).
- File di impostazioni locali aggiuntive (Schema JSON).
L'esempio seguente mostra molti campi di metadati facoltativi e più impostazioni locali. Si noti che le impostazioni locali predefinite hanno più requisiti rispetto alle impostazioni locali aggiuntive. Nel comando show, tutti i campi obbligatori non forniti per impostazioni locali aggiuntive visualizzeranno i campi dalle impostazioni locali predefinite.
- Esempio di file di versione
- Esempio di file delle impostazioni locali predefinito
- Esempio di file delle impostazioni locali aggiuntive
- Esempio di file del programma di installazione
Tracciato: manifests / m / Microsoft / WindowsTerminal / 1.6.10571.0 / Microsoft.WindowsTerminal.yaml
PackageIdentifier: "Microsoft.WindowsTerminal"
PackageVersion: "1.6.10571.0"
DefaultLocale: "en-US"
ManifestType: "version"
ManifestVersion: "1.6.0"
Nota
Se il programma di installazione è un file con estensione exe ed è stato compilato con Nullsoft o Inno, è possibile specificare tali valori. Quando si specifica Nullsoft o Inno, il client imposterà automaticamente i comportamenti di installazione silenziosa e installazione silenziosa con indicatore di stato per il programma di installazione.
Opzioni del programma di installazione
Spesso puoi scoprire quali Switches
invisibili all'utente sono disponibili per un programma di installazione tramite il passaggio di -?
al programma di installazione dalla riga di comando. Ecco alcune Switches
invisibili all'utente comuni che possono essere usate per diversi tipi di programma di installazione.
Programma di installazione | Comando | Documentazione |
---|---|---|
MSI | /q |
Opzioni della riga di comando di MSI |
InstallShield | /s |
Parametri della riga di comando di InstallShield |
Inno Setup | /SILENT or /VERYSILENT |
Documentazione di Inno Setup |
Nullsoft | /S |
Programmi di installazione/disinstallazione invisibili all'utente di Nullsoft |
Suggerimenti e procedure consigliate
- L'identificatore del pacchetto deve essere univoco. Non sono consentiti più invii con lo stesso identificatore del pacchetto. È consentita una sola richiesta pull per versione del pacchetto.
- Evita di creare più cartelle dell'editore. Ad esempio, non è possibile creare "Contoso Ltd" se è già presente una cartella "Contoso".
- Tutti gli strumenti devono supportare un'installazione invisibile all'utente. Se è presente un file eseguibile che non supporta un'installazione invisibile all'utente, in questo momento non possiamo fornire tale strumento.
- Specificare il maggior numero possibile di campi. Maggiore sarà il numero di metadati forniti, migliore sarà l'esperienza utente. In alcuni casi, i campi potrebbero non essere ancora supportati dal client di Gestione pacchetti windows (winget.exe). Ad esempio, il campo
AppMoniker
è facoltativo. Tuttavia, se includi questo campo, i clienti visualizzeranno i risultati associati al valoreMoniker
durante l'esecuzione del comando search, ad esempio vscode per Visual Studio Code. Se è presente una sola app con il valoreMoniker
specificato, i clienti possono installare l'applicazione specificando il moniker anziché l'identificatore del pacchetto completo. - La lunghezza delle stringhe in questa specifica deve essere limitata a 100 caratteri prima di un'interruzione di riga.
- Il
PackageName
deve corrispondere alla voce inserita in Aggiungi/Rimuvi programmi per facilitare la correlazione con i manifesti per supportare l'esportazionee l'aggiornamento. - Il
Publisher
deve corrispondere alla voce inserita in Aggiungi/Rimuvi programmi per facilitare la correlazione con i manifesti per supportare l'esportazionee l'aggiornamento. - I programmi di installazione dei pacchetti in formato MSI usano codici prodotto per identificare in modo univoco le applicazioni. Il codice prodotto per una determinata versione di un pacchetto deve essere incluso nel manifesto per garantire la migliore esperienza di aggiornamento.
- Quando esiste più di un tipo di programma di installazione per la versione specificata del pacchetto, è possibile includere un'istanza di
InstallerType
in tutti gliInstallers
.
Domande frequenti sul manifesto
Che cos'è un manifesto?
I manifesti sono file YAML contenenti metadati usati da Gestione pacchetti di Windows per installare e aggiornare software nel sistema operativo Windows. Esistono migliaia di questi file partizionati nella directory manifesti nel repository winget-pkgs in GitHub. La struttura della directory di Gestione pacchetti di Windows deve essere partizionata in modo da non dover scorrere molto nel sito quando si cerca un manifesto.
Che cos'è un pacchetto?
Si pensi a un pacchetto come a un'applicazione o un programma software. Gestione pacchetti di Windows usa un "PackageIdentifier" per rappresentare un pacchetto univoco. Questi sono in genere sotto forma di Publisher.Package
. In alcuni casi potrebbero essere visualizzati valori aggiuntivi separati da un secondo punto.
Che cos'è una versione?
Le versioni dei pacchetti sono associate a una versione specifica. In alcuni casi si vedrà un numero di versione semantica perfettamente formato e in altri casi potrebbe essere visualizzato qualcosa di diverso. Queste possono essere basate su dati o potrebbero avere altri caratteri con un significato specifico del pacchetto. La chiave YAML per una versione del pacchetto è "PackageVersion".
Per altre informazioni sulla struttura di directory e sulla creazione del primo manifesto, vedere Creazione di manifesti nel repository winget-pkgs in GitHub.