Uw pakketmanifest maken
Als u een softwarepakket wilt verzenden naar de Windows Package Manager Community Repository, begint u met het maken van een pakketmanifest. Het manifest is een YAML-bestand waarin de toepassing wordt beschreven die moet worden geïnstalleerd.
U kunt de Windows Package Manager Manifest Creator, het YAMLCreate PowerShell-script gebruiken of u kunt handmatig een manifest maken aan de hand van de onderstaande instructies.
Notitie
Zie de veelgestelde vragen over manifesten hieronder voor algemene informatie over manifesten, pakketten en versies.
Opties voor het maken van manifesten
WinGetCreate Utility gebruiken
U kunt het hulpprogramma wingetcreate
installeren met behulp van de onderstaande opdracht.
winget install wingetcreate
Na de installatie kunt u wingetcreate new
uitvoeren om een nieuw pakket te maken en de prompts in te vullen. De laatste optie in de WinGetCreate prompts is het manifest verzenden naar de pakketopslagplaats. Als u ja kiest, verzendt u uw pull-aanvraag (PR) automatisch naar de Windows Package Manager Community Repository.
De YAMLCreate.ps1 gebruiken
Om te helpen bij het maken van manifestbestanden hebben we een YAMLCreate.ps1 PowerShell-script aangeboden in de map Tools in de Windows Package Manager Community Repository. U kunt het script gebruiken door de opslagplaats op uw pc te klonen en het script rechtstreeks vanuit de map Tools uit te voeren. Het script vraagt u om de URL naar het installatieprogramma. Vervolgens wordt u gevraagd om metagegevens in te vullen. Net als bij het gebruik van WinGetCreatebiedt dit script de optie om uw manifest automatisch in te dienen.
Basisbeginselen van YAML
De YAML-indeling is gekozen voor pakketmanifesten vanwege de relatieve eenvoud van de leesbaarheid voor mensen en de consistentie met andere ontwikkelhulpprogramma's van Microsoft. Als u niet bekend bent met de YAML-syntaxis, kunt u de basisprincipes van Learn YAML in Y Minutesleren.
Notitie
Manifesten voor Windows Package Manager bieden momenteel geen ondersteuning voor alle YAML-functies. Niet-ondersteunde YAML-functies zijn ankers, complexe sleutels en sets.
Verdragen
Deze conventies worden gebruikt in dit artikel:
- Links van
:
staat een letterlijk trefwoord dat wordt gebruikt in manifestdefinities. - Rechts van
:
is een gegevenstype. Het gegevenstype kan een primitief type zijn, zoals tekenreeks of een verwijzing naar een uitgebreide structuur die elders in dit artikel is gedefinieerd. - De notatie
[
gegevenstype]
geeft een matrix van het genoemde gegevenstype aan.[ string ]
is bijvoorbeeld een matrix met tekenreeksen. - De notatie
{
gegevenstype:
gegevenstype}
geeft een toewijzing van het ene gegevenstype aan het andere aan.{ string: string }
is bijvoorbeeld een koppeling van tekenreeksen naar tekenreeksen.
Manifestinhoud
Een pakketmanifest bestaat uit vereiste items en optionele items die u kunnen helpen de klantervaring van het installeren van uw software te verbeteren. Deze sectie bevat een korte samenvatting van het vereiste manifestschema en volledige manifestschema's met voorbeelden van elk schema.
Elk veld in het manifestbestand moet Pascal-cased zijn en kan niet worden gedupliceerd.
Zie de manifestspecificatie in de Windows Package Manager Community Repositoryvoor een volledige lijst en beschrijvingen van items in een manifest.
Minimaal vereist schema
Zoals opgegeven in het JSON-schema voor singleton, zijn alleen bepaalde velden vereist. Het minimaal ondersteunde YAML-bestand ziet eruit zoals in het onderstaande voorbeeld. De singleton-indeling is alleen geldig voor pakketten met één installatieprogramma en één landinstelling. Als er meer dan één installatieprogramma of landinstelling is opgegeven, moeten de meerdere YAML-bestandsindeling en het schema worden gebruikt.
Het partitioneringsschema is toegevoegd om te helpen met de UX van GitHub. Mappen met duizenden kinderen worden niet goed weergegeven in de 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
Meerdere manifestbestanden
Om de beste gebruikerservaring te bieden, moeten manifesten zoveel mogelijk metagegevens bevatten. Om verantwoordelijkheden te scheiden voor het valideren van installatieprogramma's en het verstrekken van gelokaliseerde metagegevens, moeten manifesten worden opgesplitst in meerdere bestanden. Het minimale aantal YAML-bestanden voor dit type manifest is drie. Er moeten ook aanvullende locaties worden opgegeven.
- Een versie (JSON Schema) bestand.
- De standaardlandinstelling (JSON-schemabestand).
- Een installatieprogramma (JSON Schema) bestand.
- Aanvullende landinstellingen (JSON Schema) bestanden.
In het onderstaande voorbeeld ziet u veel optionele metagegevensvelden en meerdere landinstellingen. Houd er rekening mee dat de standaardinstelling meer vereisten heeft dan aanvullende landinstellingen. In de -weergaafopdrachtworden alle vereiste velden die niet zijn opgegeven voor extra lokalisaties, weergegeven als velden uit de standaardlokalisatie.
- voorbeeld van versiebestand
- Voorbeeld van een standaard landinstellingsbestand
- Voorbeeld van een aanvullend lokaliteitsbestand
- voorbeeld van installatiebestand
Pad: manifesten / 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"
Notitie
Als uw installatieprogramma een .exe is en deze is gebouwd met behulp van Nullsoft of Inno, kunt u deze waarden opgeven. Wanneer Nullsoft of Inno is opgegeven, stelt de client automatisch het stille installatiegedrag en het stille installatiegedrag met voortgang in voor het installatieprogramma.
Schakelopties voor installatieprogramma's
U kunt vaak achterhalen welke stille Switches
beschikbaar zijn voor een installatieprogramma door een -?
mee te geven via de opdrachtregel aan het installatieprogramma. Hier volgen enkele gebruikelijke stille Switches
die kunnen worden gebruikt voor verschillende installatietypen.
Installatieprogramma | Bevelen | Documentatie |
---|---|---|
MSI | /q |
MSI Command-Line Opties |
InstallShield | /s |
InstallShield Command-Line Parameters |
Installatie van Inno | /SILENT or /VERYSILENT |
documentatie voor Inno Setup |
Nullsoft | /S |
Nullsoft Stille Installateurs/Verwijderaars |
Tips en beste werkwijzen
- De pakket-id moet uniek zijn. U kunt niet meerdere inzendingen met dezelfde pakket-id hebben. Er is slechts één pull-aanvraag per pakketversie toegestaan.
- Vermijd het maken van meerdere publisher-mappen. Maak bijvoorbeeld geen 'Contoso Ltd'. als er al een map 'Contoso' is.
- Alle hulpprogramma's moeten een installatie op de achtergrond ondersteunen. Als u een uitvoerbaar bestand hebt dat geen ondersteuning biedt voor een stille installatie, kunnen we dat hulpprogramma op dit moment niet opgeven.
- Geef zoveel mogelijk velden op. Hoe meer metagegevens u levert, hoe beter de gebruikerservaring is. In sommige gevallen worden de velden mogelijk nog niet ondersteund door de Windows Package Manager-client (winget.exe). Het veld
AppMoniker
is bijvoorbeeld optioneel. Als u dit veld opneemt, zien klanten echter resultaten die zijn gekoppeld aan deMoniker
-waarde bij het uitvoeren van de opdracht zoekopdracht (bijvoorbeeld vscode- voor Visual Studio Code-). Als er slechts één app met de opgegevenMoniker
waarde is, kunnen klanten uw toepassing installeren door de moniker op te geven in plaats van de volledig gekwalificeerde pakket-id. - De lengte van tekenreeksen in deze specificatie moet worden beperkt tot 100 tekens vóór een regeleinde.
- De
PackageName
moet overeenkomen met de vermelding die is gemaakt in het onderdeel Programma's toevoegen/verwijderen om de correlatie met manifesten te vergemakkelijken ter ondersteuning van exporteren en upgrade. - De
Publisher
moet overeenkomen met de vermelding die is gemaakt in Programma's installeren/verwijderen om de correlatie met manifesten te verbeteren ter ondersteuning van exporteren en upgrade. - Pakketinstallatieprogramma's in MSI-indeling gebruiken productcodes om toepassingen uniek te identificeren. De productcode voor een bepaalde versie van een pakket moet worden opgenomen in het manifest om te zorgen voor de beste upgrade ervaring.
- Wanneer er meer dan één installatieprogrammatype bestaat voor de opgegeven versie van het pakket, kan een exemplaar van
InstallerType
onder elk van deInstallers
worden geplaatst.
Veelgestelde vragen over manifesten
Wat is een manifest?
Manifesten zijn YAML-bestanden met metagegevens die door Windows Package Manager worden gebruikt om software op het Windows-besturingssysteem te installeren en bij te werken. Er zijn duizenden van deze bestanden gepartitioneerd onder de map manifesten in de winget-pkgs-opslagplaats op GitHub. De mapstructuur van Windows Package Manager moest worden gepartitioneerd, zodat u niet zoveel hoeft te schuiven op de site wanneer u op zoek bent naar een manifest.
Wat is een pakket?
U kunt een pakket beschouwen als een toepassing of een softwareprogramma. Windows Package Manager maakt gebruik van een PackageIdentifier om een uniek pakket weer te geven. Deze zijn over het algemeen in de vorm van Publisher.Package
. Soms ziet u mogelijk extra waarden, gescheiden door een tweede punt.
Wat is een versie?
Pakketversies zijn gekoppeld aan een specifieke release. In sommige gevallen ziet u een perfect gevormd semantisch versienummer en in andere gevallen ziet u iets anders. Deze kunnen datumgestuurd zijn of andere tekens bevatten met een pakketspecifieke betekenis. De YAML-sleutel voor een pakketversie is PackageVersion.
Zie Authoring Manifests in de winget-pkgs-opslagplaats op GitHub voor meer informatie over het begrijpen van de mapstructuur en het maken van uw eerste manifest.
Windows developer