In questo articolo, daremo una breve occhiata alle fasi chiave della creazione del pacchetto Chocolatey.
Prerequisiti
Prima di iniziare con la creazione di un pacchetto Chocolatey, assicurati di aver bisogno di:
- Ho installato Chocolatey;
- leggi cosa sono i pacchetti Chocolatey? sezione della documentazione Chocolatey;
- sapere come funziona un pacchetto. In particolare, sei consapevole che:
- un pacchetto contiene un *.nuspe file c. Questo definisce il pacchetto. (Documenti);
- un pacchetto può contenere software incorporato;
- un pacchetto può contenere uno script di installazione.
- un pacchetto contiene un *.nuspe file c. Questo definisce il pacchetto. (Documenti);
Un pacchetto Chocolatey comprende i seguenti elementi principali:
- Un *.nuspec file. Questo passaggio è obbligatorio.
- Il chocolateyInstall.ps1 file.
- Qualsiasi file dell'applicazione da includere (si consiglia vivamente di essere l'autore in questo caso o di avere il diritto di distribuire i file). Il *.exe i file nel pacchetto/scaricati nella cartella del pacchetto da chocolateyInstall.ps1 avranno un collegamento alla riga di comando.
- chocolateyUninstall.ps1 per disinstallare il pacchetto.
Vi consiglio di dare un'occhiata al video che mostra la creazione del pacchetto. Tieni presente che il video presenta contenuti un po' datati di chocolateyInstall.ps1 . Al momento, chocolateyInstall.ps1 ha il seguente aspetto:
$packageName = 'windirstat $fileType = 'exe' $url = 'http://prdownloads.sourceforge.net/windirstat/windirstat1_1_2_setup.exe' $silentArgs = '/S' Install-ChocolateyPackage $packageName $fileType $silentArgs $url
Le Finestre di cioccolato gestore pacchetti utilizza la stessa infrastruttura di NuGet, ovvero Visual Studio gestore di pacchetti. Pertanto, i pacchetti si basano sugli stessi principi, compreso quello che afferma che la descrizione del pacchetto (specifica) deve essere archiviata nel formato XML, noto come Nuspec.
Il *.nuspec contiene informazioni di base come la versione, la licenza, il manutentore e le dipendenze del pacchetto. Chocolatey include funzionalità aggiuntive opzionali nella parte superiore di NuGet *.nuspec file. Pertanto, il modo migliore per determinare le funzionalità attualmente supportate è creare un pacchetto di prova e guardare il file *.nuspec generato:
choco new testpackage
Nota: Se il tuo pacchetto utilizza la funzionalità introdotta di recente, potresti voler includere una dipendenza che indica la versione Chocolatey più bassa che supporta la funzionalità richiesta. In caso contrario, l'installazione potrebbe non riuscire per gli utenti che hanno installato una versione precedente di Chocolatey.
Puoi indicare la dipendenza Chocolatey come qualsiasi altra dipendenza, ad esempio:
<dependencies> <dependency id="chocolatey" version="0.9.8.21" /> </dependencies>
Guida rapida
- Genera un nuovo pacchetto :
- Il
choco new -h
comando ti aiuterà a impostare le opzioni del pacchetto. - Una volta individuate tutte le opzioni, puoi procedere con la generazione del tuo modello.
- Il
- Modifica il modello di conseguenza :
cd package-name
- Modifica il
package-name.
file di configurazione nuspec. - Modifica il
./tools/chocolateyInstall.ps1
installa script.- Assicurati di aver configurato la modalità silenziosa del programma di installazione. Usa Universal Silent Switch Finder, disponibile come pacchetto Choco:
choco install ussf.
- Devi salvare i tuoi file con la codifica dei caratteri UTF–8 senza BOM.
- Assicurati di aver configurato la modalità silenziosa del programma di installazione. Usa Universal Silent Switch Finder, disponibile come pacchetto Choco:
- Crea il pacchetto :
- Ancora nella directory del pacchetto.
choco pack
- "nome-pacchetto creato con successo.1.1.0.nupkg".
- Prova il pacchetto :
- Il test deve essere eseguito su una macchina virtuale.
- Nella directory del pacchetto, usa:
choco install package-name -s
package-name
è l'elemento id nel nuspec
- Spingi il pacchetto al repository del pacchetto della community Chocolatey:
- Ottieni un account Chocolatey:
- Registrati.
- Copia la chiave API dal tuo account Chocolatey.
choco apikey -k [API_KEY_HERE] -source https://push.chocolatey.org/
choco push package-name.1.1.0.nupkg -s https://push.chocolatey.org/
– il *.nupkg il file può essere omesso se è l'unico nella directory.
- Ottieni un account Chocolatey:
Esempi
Ecco alcuni semplici esempi.
Nota :Gli esempi forniti potrebbero richiedere un aggiornamento dei checksum e concetti di pacchetto più recenti. Esegui choco new
durante la creazione di pacchetti in quanto contiene le note più aggiornate.
chocolateyInstall.ps1 per il programma di installazione .exe
$name = 'Package Name' $installerType = 'exe' $url = 'http://path/to/download/installer.exe' $silentArgs = '/VERYSILENT' Install-ChocolateyPackage $name $installerType $silentArgs $url
Nota :è necessario impostare l'opzione della riga di comando per rendere silenzioso il programma di installazione, ad es. ./VERYSILENT
Il nome dello switch varia a seconda del programma di installazione.
chocolateyInstall.ps1 per programma di installazione .msi
NOTA :È necessario mantenere la compatibilità con Posh v2. Non tutti i sistemi operativi supportati sono su Posh v2 (né viene fornito OOB con Posh v3+). La migliore pratica è lavorare con la più ampia compatibilità di sistemi disponibili.
$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
Test del tuo pacchetto
Nota 1 :Consiglio vivamente di eseguire i test su una macchina virtuale, non su una macchina funzionante.
Nota 2 :Il test del pacchetto può essere eseguito allo stesso modo del verificatore. Dai un'occhiata al test del verificatore di cioccolato.
Per testare il pacchetto appena creato, apri una shell della riga di comando e vai alla directory in cui *.nupkg si trova il file. Quindi digita quanto segue:
choco install packageName -dv -s .
Questo comando installerà il pacchetto direttamente dal tuo codice sorgente. Se trovi cose che devi correggere, usa --force (-f)
per rimuovere e reinstallare il pacchetto dal *.nupkg aggiornato . Se stai testando specificamente chocolateyBeforeModify.ps1 , è necessario testare gli scenari di aggiornamento e disinstallazione. Devi prima installare una versione del pacchetto con questo file perché simile alla disinstallazione t0, prima della modifica viene eseguito dal pacchetto installato, non dal pacchetto che stai installando (come chocolateyInstall.ps1 fa).
Nota 1 :Force --force (-f)
dovrebbe essere utilizzato solo durante i test successivi quando stai reinstallando lo stesso pacchetto che hai modificato e non dovrebbe essere utilizzato in scenari di uso regolare. Sicuramente non dovrebbe essere negli script.
Nota 2 :se utilizzi un trattino Semver nella versione del pacchetto (come 1.0.0-beta ), è necessario utilizzare -pre
interruttore. In caso contrario, riceverai il messaggio "Impossibile trovare il pacchetto ' errori dall'installazione di choco. Puoi anche specificare -version 1.0.0-beta
per installare la versione esatta.
Il carattere punto punta alla directory corrente. Puoi specificare più directory separate da un punto e virgola.
Spingi il tuo pacchetto
Per eseguire il push del pacchetto dopo averlo creato e testato, digita quanto segue:
choco push packageName.nupkg -s sourceLocation
Dove:
packageName.nupkg
è il nome del nupkg che è stato compilato con un numero di versione come parte del nome del pacchetto;sourceLocation
è la posizione della fonte a cui vuoi inviare il push (ad es.-s https://chocolatey.org/
per il feed della community Chocolatey).
È necessario disporre di una chiave API per il set https://chocolatey.org/. Dai un'occhiata a choco push.
Puoi anche accedere a chocolatey.org e caricare il tuo pacchetto da lì (non consigliato per i pacchetti superiori a 2 MB).
Riferimenti
Puoi utilizzare le seguenti risorse per saperne di più sulla creazione e distribuzione di un pacchetto Chocolatey:
- https://chocolatey.org/docs/create-packages
- https://github.com/chocolatey-community/chocolatey-test-environm Cioccolato ent