Creare il manifesto del pacchetto

Per inviare un pacchetto software al repository community di Gestione pacchetti Windows, iniziare creando un manifesto del pacchetto. Il manifesto è un file YAML che descrive l'applicazione da installare.

È possibile usare l'Gestione pacchetti Windows Manifesto Creator, lo script YAMLCreate PowerShell oppure creare un manifesto manualmente seguendo le istruzioni riportate di seguito.

Nota

Vedere le domande frequenti sul manifesto seguenti per informazioni generali più generali che illustrano manifesti, pacchetti e versioni.

Opzioni per la creazione del manifesto

Uso di WinGetCrea utilità

È possibile installare l'utilità usando il wingetcreate 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 WinGetCreate consiste nell'inviare il manifesto al repository dei pacchetti. Se si sceglie sì, si invierà automaticamente la richiesta pull (PR) al repository della community di Gestione pacchetti Windows.

Uso del YAMLCreate.ps1

Per creare file manifesto, è stato fornito uno script di powershell YAMLCreate.ps1 disponibile nella cartella Strumenti nel repository della community di Gestione pacchetti Windows. È possibile usare lo script clonando il repository nel PC ed eseguendo lo script direttamente dalla cartella Strumenti . Lo script richiederà l'URL del programma di installazione, quindi richiederà di compilare i metadati. Analogamente all'uso di WinGetCreate, questo script offrirà l'opzione per 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.
  • Il tipo di dati di] notazione [ indica una matrice del tipo di dati indicato. Ad esempio, [ string ] è una matrice di stringhe.
  • Il tipo di dati tipo} di dati di : notazione { 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 è costituito da elementi necessari e elementi facoltativi che consentono di migliorare l'esperienza del cliente di installare il software. In questa sezione viene fornito un breve riepilogo dello schema manifesto richiesto e gli schemi del manifesto completi con esempi di 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 Gestione pacchetti Windows.

Schema minimo necessario

Come specificato nello schema JSON singleton, sono necessari solo alcuni campi. Il file YAML supportato minimo 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 più formato di file YAML e schema.

Lo schema di partizionamento è stato aggiunto per facilitare l'esperienza utente di GitHub. Le cartelle con migliaia di elementi figlio non funzionano bene 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.0.0

Più file manifesto

Per offrire la migliore esperienza utente, i manifesti devono contenere il maggior numero possibile di metadati. Per separare i problemi relativi alla convalida dei programmi di installazione e alla fornitura di metadati localizzati, i manifesti devono essere suddivisi in più file. Il numero minimo di file YAML per questo tipo di manifesto è tre. Devono essere fornite anche impostazioni locali aggiuntive.

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 le impostazioni locali aggiuntive visualizzeranno i campi dalle impostazioni locali predefinite.

Percorso: manifesti / 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.0.0"

Nota

Se il programma di installazione è un .exe ed è stato compilato usando 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 creare "Contoso Ltd". se esiste già una cartella "Contoso".
  • Tutti gli strumenti devono supportare un'installazione invisibile all'utente. Se si dispone di un eseguibile che non supporta un'installazione invisibile all'utente, non è possibile fornire tale strumento in questo momento.
  • Specificare il maggior numero possibile di campi. La maggior parte dei meta-dati forniti sarà la migliore esperienza utente. In alcuni casi, i campi potrebbero non essere ancora supportati dal client Gestione pacchetti Windows (winget.exe). Ad esempio, il campo AppMoniker è facoltativo. Tuttavia, se includi questo campo, i clienti visualizzeranno i risultati associati al valore Moniker durante l'esecuzione del comando search, ad esempio vscode per Visual Studio Code. Se esiste solo un'app con il valore specificato Moniker , i clienti possono installare l'applicazione specificando il moniker anziché l'identificatore completo del pacchetto.
  • La lunghezza delle stringhe in questa specifica deve essere limitata a 100 caratteri prima di un'interruzione di riga.
  • Deve PackageName corrispondere alla voce eseguita in Installazione applicazioni per facilitare la correlazione con i manifesti per supportare l'esportazione e l'aggiornamento.
  • Deve Publisher corrispondere alla voce eseguita in Installazione applicazioni per facilitare la correlazione con i manifesti per supportare l'esportazione e 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 .
  • Limita la lunghezza delle stringhe nel manifesto a 100 caratteri prima di un'interruzione di riga.
  • Quando esiste più di un tipo di programma di installazione per la versione specificata del pacchetto, è possibile includere un'istanza di InstallerType in tutti gli Installers.

Domande frequenti sul manifesto

Che cos'è un manifesto?

I manifesti sono file YAML contenenti metadati utilizzati dal Gestione pacchetti Windows per installare e aggiornare il software nel sistema operativo Windows. Esistono migliaia di questi file partizionati nella directory manifesti nel repository winget-pkgs in GitHub. La struttura di directory Gestione pacchetti Windows deve essere partizionata in modo da non dover scorrere molto nel sito quando si cerca un manifesto.

Cos'è un pacchetto?

Si pensi a un pacchetto come un'applicazione o un programma software. Gestione pacchetti Windows usa un oggetto "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 periodo.

Che cos'è una versione?

Le versioni dei pacchetti sono associate a una versione specifica. In alcuni casi vedrai un numero di versione semantica perfettamente formato e in altri casi potresti vedere qualcosa di diverso. Questi possono essere basati su data 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.