In dit artikel zullen we een korte blik werpen op de belangrijkste fasen van het maken van Chocolatey-pakketten.
Vereisten
Voordat u begint met het maken van een Chocolatey-pakket, moet u het volgende doen:
- chocolade hebben geïnstalleerd;
- lees de Wat zijn Chocolatey Packages? sectie van de Chocolatey-documentatie;
- weet hoe een pakket werkt. U weet met name dat:
- een pakket bevat een *.nuspe c bestand. Dit definieert het pakket. (Documenten);
- een pakket kan embedded software bevatten;
- een pakket kan een installatiescript bevatten.
- een pakket bevat een *.nuspe c bestand. Dit definieert het pakket. (Documenten);
Een Chocolatey-pakket bestaat uit de volgende hoofdelementen:
- Een *.nuspec het dossier. Deze stap is verplicht.
- The chocolateyInstall.ps1 bestand.
- Alle toepassingsbestanden die moeten worden opgenomen (het wordt ten zeerste aanbevolen dat u in dit geval de auteur bent of dat u het recht hebt om bestanden te distribueren). De *.exe bestanden in het pakket/gedownload naar de pakketmap van chocolateyInstall.ps1 hebben een link naar de opdrachtregel.
- chocolateyUninstall.ps1 voor het verwijderen van uw pakket.
Ik raad je aan om de video te bekijken waarin het maken van het pakket wordt getoond. Houd er rekening mee dat de video een beetje verouderde inhoud van de chocolateyInstall.ps1 . bevat . Op dit moment chocolateyInstall.ps1 ziet er als volgt uit:
$packageName = 'windirstat $fileType = 'exe' $url = 'http://prdownloads.sourceforge.net/windirstat/windirstat1_1_2_setup.exe' $silentArgs = '/S' Install-ChocolateyPackage $packageName $fileType $silentArgs $url
De Chocolatey Windows pakketbeheerder gebruikt dezelfde infrastructuur als NuGet, namelijk de Visual Studio pakket manager. Daarom zijn de pakketten gebaseerd op dezelfde principes, inclusief het principe dat de pakketbeschrijving (specificatie) moet worden opgeslagen in het XML-formaat, bekend als Nuspec.
De *.nuspec bestand bevat basisinformatie zoals de versie, licentie, onderhouder en pakketafhankelijkheden. Chocolatey bevat extra optionele functionaliteit helemaal bovenaan de NuGet *.nuspec het dossier. De beste manier om de momenteel ondersteunde functies te bepalen, is dus door een testpakket te maken en naar het gegenereerde *.nuspec-bestand te kijken:
choco new testpackage
Opmerking: Als uw pakket de recent geïntroduceerde functionaliteit gebruikt, wilt u misschien een afhankelijkheid opnemen die de laagste Chocolatey-versie aangeeft die de vereiste functionaliteit ondersteunt. Anders kan de installatie mislukken voor de gebruikers die een oudere Chocolatey-versie hebben geïnstalleerd.
U kunt de Chocolatey-afhankelijkheid aangeven zoals elke andere afhankelijkheid, bijvoorbeeld:
<dependencies> <dependency id="chocolatey" version="0.9.8.21" /> </dependencies>
Snelstartgids
- Genereer een nieuw pakket :
- De
choco new -h
commando zal u helpen bij het instellen van de pakketopties. - Zodra je alle opties hebt bedacht, kun je doorgaan met het genereren van je sjabloon.
- De
- Bewerk de sjabloon dienovereenkomstig :
cd package-name
- Bewerk de
package-name.
nuspec configuratiebestand. - Bewerk de
./tools/chocolateyInstall.ps1
script installeren.- Zorg ervoor dat u de stille modus van het installatieprogramma hebt geconfigureerd. Gebruik Universal Silent Switch Finder, die beschikbaar is als Choco-pakket:
choco install ussf.
- U moet uw bestanden opslaan met de UTF-8-tekencodering zonder stuklijst.
- Zorg ervoor dat u de stille modus van het installatieprogramma hebt geconfigureerd. Gebruik Universal Silent Switch Finder, die beschikbaar is als Choco-pakket:
- Bouw het pakket :
- Nog steeds in de pakketmap.
choco pack
- “Pakketnaam.1.1.0.nupkg gemaakt”.
- Test het pakket :
- Het testen moet worden uitgevoerd op een virtuele machine.
- Gebruik in uw pakketdirectory:
choco install package-name -s
package-name
is het id-element in de nuspec
- Duw het pakket naar de Chocolatey community pakketrepository:
- Krijg een Chocolatey-account:
- Registreer.
- Kopieer de API-sleutel van uw Chocolatey-account.
choco apikey -k [API_KEY_HERE] -source https://push.chocolatey.org/
choco push package-name.1.1.0.nupkg -s https://push.chocolatey.org/
– de *.nupkg bestand kan worden weggelaten als het de enige in de map is.
- Krijg een Chocolatey-account:
Voorbeelden
Hier zijn enkele eenvoudige voorbeelden.
Opmerking :De gegeven voorbeelden vereisen mogelijk een update van checksums en nieuwere pakketconcepten. Voer choco new
uit bij het maken van pakketten omdat het de meest actuele opmerkingen bevat.
chocolateyInstall.ps1 voor .exe-installatieprogramma
$name = 'Package Name' $installerType = 'exe' $url = 'http://path/to/download/installer.exe' $silentArgs = '/VERYSILENT' Install-ChocolateyPackage $name $installerType $silentArgs $url
Opmerking :U moet de opdrachtregelschakelaar instellen om het installatieprogramma stil te maken, b.v. ./VERYSILENT
De naam van de schakelaar varieert, afhankelijk van het installatieprogramma.
chocolateyInstall.ps1 voor .msi-installatieprogramma
OPMERKING :U moet de compatibiliteit met Posh v2. Niet elk ondersteund besturingssysteem staat op Posh v2 (noch komt OOB met Posh v3+). Het beste is om te werken met de breedst mogelijke compatibiliteit van systemen die er zijn.
$packageName = 'Package Name' $installerType = 'msi' $url = 'http://path/to/download/installer_x86.msi' $url64 = 'http://path/to/download/installer_x64.msi' $silentArgs = '/quiet' $validExitCodes = @(0,3010) Install-ChocolateyPackage $packageName $installerType $silentArgs $url $url64 -validExitCodes $validExitCodes
Uw pakket testen
Opmerking 1 :Ik raad ten zeerste aan om tests uit te voeren op een virtuele machine, niet op uw werkende machine.
Opmerking 2 :Het testen van het pakket kan op dezelfde manier worden gedaan als de verifier. Bekijk Chocolatey Verifier-testen.
Om het nieuw gebouwde pakket te testen, opent u een opdrachtregelshell en navigeert u naar de map waar de *.nupkg bestand bevindt. Typ dan het volgende:
choco install packageName -dv -s .
Met deze opdracht wordt het pakket rechtstreeks vanuit uw bron geïnstalleerd. Als je dingen vindt die je moet repareren, gebruik dan --force (-f)
om het pakket te verwijderen en opnieuw te installeren van de bijgewerkte *.nupkg . Als u specifiek chocolateyBeforeModify.ps1 . aan het testen bent , moet u de upgrade- en de-installatiescenario's testen. U moet eerst een versie van het pakket met dit bestand installeren, omdat het vergelijkbaar is om te verwijderen, voordat u het wijzigt wordt uitgevoerd vanuit het geïnstalleerde pakket, niet het pakket dat u installeert (zoals chocolateyInstall.ps1 doet).
Opmerking 1 :Force --force (-f)
mag alleen worden gebruikt tijdens de daaropvolgende tests wanneer u hetzelfde pakket opnieuw installeert dat u hebt gewijzigd en mag niet worden gebruikt in scenario's voor normaal gebruik. Het mag zeker niet in scripts staan.
Opmerking 2 :Als u een Semver-streepje gebruikt in uw pakketversie (zoals 1.0.0-beta ), moet u de -pre
. gebruiken schakelaar. Anders krijgt u de melding 'Kan pakket niet vinden ' fouten van de choco-installatie. U kunt ook -version 1.0.0-beta
. specificeren om de exacte versie te installeren.
Het puntteken wijst naar de huidige directory. U kunt meerdere mappen specificeren, gescheiden door een puntkomma.
Duw uw pakket door
Typ het volgende om uw pakket te pushen nadat u het hebt gebouwd en getest:
choco push packageName.nupkg -s sourceLocation
Waar:
packageName.nupkg
is de naam van de nupkg die is gebouwd met een versienummer als onderdeel van de pakketnaam;sourceLocation
is de locatie van de bron waarnaar u wilt pushen (bijv.-s https://chocolatey.org/
voor de Chocolatey-communityfeed).
U hebt een API-sleutel nodig voor de https://chocolatey.org/-set. Kijk eens naar choco push.
U kunt ook inloggen op chocolatey.org en uw pakket vanaf daar uploaden (niet aanbevolen voor pakketten van meer dan 2 MB).
Referenties
U kunt de volgende bronnen gebruiken om meer te weten te komen over het maken en distribueren van een Chocolatey-pakket:
- https://chocolatey.org/docs/create-packages
- https://github.com/chocolatey-community/chocolatey-test-environm Chocolade ent