In diesem Artikel werfen wir einen kurzen Blick auf die wichtigsten Phasen der Erstellung von Chocolatey-Paketen.
Voraussetzungen
Bevor Sie mit der Erstellung eines Chocolatey-Pakets beginnen, stellen Sie Folgendes sicher:
- Chocolatey installiert haben;
- Lesen Sie Was sind schokoladige Pakete? Abschnitt der Chocolatey-Dokumentation;
- wissen, wie ein Paket funktioniert. Insbesondere ist Ihnen Folgendes bekannt:
- ein Paket enthält eine *.nuspe c-Datei. Dies definiert das Paket. (Dokumente);
- ein Paket kann eingebettete Software enthalten;
- ein Paket kann ein Installationsskript enthalten.
- ein Paket enthält eine *.nuspe c-Datei. Dies definiert das Paket. (Dokumente);
Ein Chocolatey-Paket besteht aus den folgenden Hauptelementen:
- Ein *.nuspec Datei. Dieser Schritt ist obligatorisch.
- Die chocolateyInstall.ps1 Datei.
- Alle einzuschließenden Anwendungsdateien (es wird dringend empfohlen, dass Sie in diesem Fall der Autor sind oder das Recht haben, Dateien zu verteilen). Die *.exe Dateien im Paket/heruntergeladen in den Paketordner von chocolateyInstall.ps1 haben einen Link zur Befehlszeile.
- chocolateyUninstall.ps1 zum Deinstallieren Ihres Pakets.
Ich empfehle Ihnen, sich das Video anzusehen, das die Paketerstellung zeigt. Bitte beachten Sie, dass das Video etwas veraltete Inhalte der chocolateyInstall.ps1 enthält . Im Moment chocolateyInstall.ps1 sieht wie folgt aus:
$packageName = 'windirstat $fileType = 'exe' $url = 'http://prdownloads.sourceforge.net/windirstat/windirstat1_1_2_setup.exe' $silentArgs = '/S' Install-ChocolateyPackage $packageName $fileType $silentArgs $url
Die Schokoladenfenster Der Paketmanager verwendet dieselbe Infrastruktur wie NuGet, also Visual Studio Paket-Manager. Daher basieren die Pakete auf denselben Prinzipien, einschließlich dem, dass die Paketbeschreibung (Spezifikation) im XML-Format, bekannt als Nuspec, gespeichert werden muss.
Die *.nuspec Die Datei enthält grundlegende Informationen wie Version, Lizenz, Betreuer und Paketabhängigkeiten. Chocolatey enthält zusätzliche optionale Funktionen ganz oben in NuGet *.nuspec Datei. Daher ist der beste Weg, die derzeit unterstützten Funktionen zu bestimmen, ein Testpaket zu erstellen und sich die generierte *.nuspec-Datei anzusehen:
choco new testpackage
Hinweis: Wenn Ihr Paket die kürzlich eingeführte Funktionalität verwendet, möchten Sie möglicherweise eine Abhängigkeit einschließen, die die niedrigste Chocolatey-Version angibt, die die erforderliche Funktionalität unterstützt. Andernfalls könnte die Installation für Benutzer fehlschlagen, die eine ältere Chocolatey-Version installiert haben.
Sie können die Chocolatey-Abhängigkeit wie jede andere Abhängigkeit angeben, z. B.:
<dependencies> <dependency id="chocolatey" version="0.9.8.21" /> </dependencies>
Kurzanleitung
- Neues Paket erstellen :
- Der
choco new -h
Der Befehl hilft Ihnen beim Einrichten der Paketoptionen. - Sobald Sie alle Optionen herausgefunden haben, können Sie mit der Generierung Ihrer Vorlage fortfahren.
- Der
- Bearbeiten Sie die Vorlage entsprechend :
cd package-name
- Bearbeiten Sie den
package-name.
nuspec-Konfigurationsdatei. - Bearbeiten Sie
./tools/chocolateyInstall.ps1
install script.- Stellen Sie sicher, dass Sie den unbeaufsichtigten Modus des Installationsprogramms konfiguriert haben. Verwenden Sie den Universal Silent Switch Finder, der als Choco-Paket verfügbar ist:
choco install ussf.
- Sie müssen Ihre Dateien mit der UTF-8-Zeichenkodierung ohne BOM speichern.
- Stellen Sie sicher, dass Sie den unbeaufsichtigten Modus des Installationsprogramms konfiguriert haben. Verwenden Sie den Universal Silent Switch Finder, der als Choco-Paket verfügbar ist:
- Paket erstellen :
- Immer noch im Paketverzeichnis.
choco pack
- „Paketname.1.1.0.nupkg erfolgreich erstellt“.
- Paket testen :
- Tests sollten auf einer virtuellen Maschine durchgeführt werden.
- Verwenden Sie in Ihrem Paketverzeichnis:
choco install package-name -s
package-name
ist das id-Element in nuspec
- Push das Paket zum Paket-Repository der Chocolatey-Community:
- Holen Sie sich ein Chocolatey-Konto:
- Registrieren.
- Kopieren Sie den API-Schlüssel aus Ihrem Chocolatey-Konto.
choco apikey -k [API_KEY_HERE] -source https://push.chocolatey.org/
choco push package-name.1.1.0.nupkg -s https://push.chocolatey.org/
– die *.nupkg Datei kann weggelassen werden, wenn sie die einzige im Verzeichnis ist.
- Holen Sie sich ein Chocolatey-Konto:
Beispiele
Hier sind einige einfache Beispiele.
Hinweis Hinweis:Die bereitgestellten Beispiele erfordern möglicherweise eine Aktualisierung der Prüfsummen und neuere Paketkonzepte. Führen Sie choco new
aus beim Erstellen von Paketen, da es die aktuellsten Hinweise enthält.
chocolateyInstall.ps1 für .exe-Installationsprogramm
$name = 'Package Name' $installerType = 'exe' $url = 'http://path/to/download/installer.exe' $silentArgs = '/VERYSILENT' Install-ChocolateyPackage $name $installerType $silentArgs $url
Hinweis :Sie müssen den Befehlszeilenschalter einrichten, um das Installationsprogramm stumm zu schalten, z. ./VERYSILENT
Der Schaltername variiert je nach Installationsprogramm.
chocolateyInstall.ps1 für das .msi-Installationsprogramm
HINWEIS :Sie müssen die Kompatibilität mit Posh v2 beibehalten. Nicht jedes unterstützte Betriebssystem ist auf Posh v2 (auch OOB mit Posh v3+). Die beste Vorgehensweise besteht darin, mit der größtmöglichen Kompatibilität von Systemen zu arbeiten, die es gibt.
$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
Testen Ihres Pakets
Anmerkung 1 :Ich empfehle dringend, Tests auf einer virtuellen Maschine durchzuführen, nicht auf Ihrer Arbeitsmaschine.
Anmerkung 2 :Der Pakettest kann auf die gleiche Weise wie der Prüfer durchgeführt werden. Sehen Sie sich Chocolatey Verifier Testing an.
Öffnen Sie zum Testen des neu erstellten Pakets eine Befehlszeilen-Shell und navigieren Sie zu dem Verzeichnis, in dem sich die Datei *.nupkg befindet Datei befindet. Geben Sie dann Folgendes ein:
choco install packageName -dv -s .
Dieser Befehl installiert das Paket direkt aus Ihrer Quelle. Wenn Sie Dinge finden, die Sie beheben müssen, verwenden Sie --force (-f)
um das Paket aus der aktualisierten *.nupkg zu entfernen und neu zu installieren . Wenn Sie speziell chocolateyBeforeModify.ps1 testen , müssen Sie die Upgrade- und Deinstallationsszenarien testen. Sie müssen zuerst eine Version des Pakets mit dieser Datei installieren, weil ähnlich wie beim Deinstallieren vor dem Ändern wird aus dem installierten Paket ausgeführt, nicht aus dem Paket, das Sie gerade installieren (wie chocolateyInstall.ps1 tut).
Anmerkung 1 :Force --force (-f)
sollte nur während der nachfolgenden Tests verwendet werden, wenn Sie dasselbe Paket erneut installieren, das Sie geändert haben, und sollte nicht in regulären Anwendungsszenarien verwendet werden. Es sollte definitiv nicht in Skripten enthalten sein.
Anmerkung 2 :Wenn Sie einen Semver-Bindestrich in Ihrer Paketversion verwenden (z. B. 1.0.0-beta ), müssen Sie den -pre
verwenden schalten. Andernfalls erhalten Sie die Meldung „Paket konnte nicht gefunden werden ‘Fehler von der Choco-Installation. Sie können auch -version 1.0.0-beta
angeben um die exakte Version zu installieren.
Der Punkt zeigt auf das aktuelle Verzeichnis. Sie können mehrere Verzeichnisse angeben, die durch ein Semikolon getrennt sind.
Push Ihr Paket
Geben Sie Folgendes ein, um Ihr Paket zu pushen, nachdem Sie es erstellt und getestet haben:
choco push packageName.nupkg -s sourceLocation
Wo:
packageName.nupkg
ist der Name des nupkg, das mit einer Versionsnummer als Teil des Paketnamens gebaut wurde;sourceLocation
ist der Speicherort der Quelle, zu der Sie pushen möchten (z. B.-s https://chocolatey.org/
für den Chocolatey-Community-Feed).
Sie benötigen einen API-Schlüssel für das https://chocolatey.org/-Set. Sehen Sie sich Choco Push an.
Sie können sich auch bei chocolatey.org anmelden und Ihr Paket von dort hochladen (nicht empfohlen für Pakete über 2 MB).
Referenzen
Sie können die folgenden Ressourcen verwenden, um mehr über die Erstellung und Verteilung eines Chocolatey-Pakets zu erfahren:
- https://chocolatey.org/docs/create-packages
- https://github.com/chocolatey-community/chocolatey-test-environm Schokoladig ent