Neste artigo, vamos dar uma breve olhada nos principais estágios da criação do pacote Chocolatey.
Pré-requisitos
Antes de começar com a criação de um pacote Chocolatey, certifique-se de que você precisa:
- tenha o Chocolatey instalado;
- leia o que são pacotes de chocolate? seção da documentação do Chocolatey;
- saiba como um pacote funciona. Especificamente, você está ciente de que:
- um pacote contém um *.nuspe arquivo c. Isso define o pacote. (Docs);
- um pacote pode conter software incorporado;
- um pacote pode conter um script de instalação.
- um pacote contém um *.nuspe arquivo c. Isso define o pacote. (Docs);
Um pacote Chocolatey é composto pelos seguintes elementos principais:
- Um *.nuspec Arquivo. Esta etapa é obrigatória.
- O chocolateyInstall.ps1 arquivo.
- Quaisquer arquivos de aplicativos a serem incluídos (é altamente recomendável que você seja o autor neste caso ou tenha o direito de distribuir os arquivos). O *.exe os arquivos no pacote/baixados para a pasta do pacote de chocolateyInstall.ps1 terão um link para a linha de comando.
- chocolateyUninstall.ps1 para desinstalar seu pacote.
Eu recomendo que você dê uma olhada no vídeo que mostra a criação do pacote. Observe que o vídeo apresenta um conteúdo um pouco desatualizado do chocolateyInstall.ps1 . No momento,chocolateInstall.ps1 se parece com o seguinte:
$packageName = 'windirstat $fileType = 'exe' $url = 'http://prdownloads.sourceforge.net/windirstat/windirstat1_1_2_setup.exe' $silentArgs = '/S' Install-ChocolateyPackage $packageName $fileType $silentArgs $url
As Janelas de Chocolate gerenciador de pacotes usa a mesma infraestrutura do NuGet, que é o Visual Studio gerenciador de pacotes. Portanto, os pacotes são baseados nos mesmos princípios, inclusive aquele que estabelece que a descrição do pacote (especificação) deve ser armazenada no formato XML, conhecido como Nuspec.
O *.nuspec contém informações básicas como versão, licença, mantenedor e dependências do pacote. Chocolatey inclui funcionalidades opcionais adicionais no topo do NuGet *.nuspec Arquivo. Assim, a melhor maneira de determinar os recursos atualmente suportados é criar um pacote de teste e observar o arquivo *.nuspec gerado:
choco new testpackage
Observação: Se o seu pacote usa a funcionalidade introduzida recentemente, você pode querer incluir uma dependência indicando a versão mais baixa do Chocolatey que suporta a funcionalidade necessária. Caso contrário, a instalação pode falhar para os usuários que possuem uma versão mais antiga do Chocolatey instalada.
Você pode indicar a dependência Chocolatey como qualquer outra dependência, por exemplo:
<dependencies> <dependency id="chocolatey" version="0.9.8.21" /> </dependencies>
Guia de início rápido
- Gerar um novo pacote :
- O
choco new -h
comando irá ajudá-lo a configurar as opções do pacote. - Depois de descobrir todas as opções, você pode continuar gerando seu modelo.
- O
- Edite o modelo adequadamente :
cd package-name
- Edite o
package-name.
arquivo de configuração nuspec. - Edite o
./tools/chocolateyInstall.ps1
script de instalação.- Certifique-se de ter configurado o modo silencioso do instalador. Use o Universal Silent Switch Finder, que está disponível como um pacote Choco:
choco install ussf.
- Você precisa salvar seus arquivos com a codificação de caracteres UTF–8 sem BOM.
- Certifique-se de ter configurado o modo silencioso do instalador. Use o Universal Silent Switch Finder, que está disponível como um pacote Choco:
- Crie o pacote :
- Ainda no diretório de pacotes.
choco pack
- "Pacote-name.1.1.0.nupkg criado com sucesso".
- Teste o pacote :
- O teste deve ser realizado em uma máquina virtual.
- Em seu diretório de pacotes, use:
choco install package-name -s
package-name
é o elemento id no nuspec
- Envie o pacote para o repositório de pacotes da comunidade Chocolatey:
- Crie uma conta Chocolatey:
- Cadastre-se.
- Copie a chave de API da sua conta 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/
– o *.nupkg arquivo pode ser omitido se for o único no diretório.
- Crie uma conta Chocolatey:
Exemplos
Aqui estão alguns exemplos simples.
Observação :Os exemplos fornecidos podem exigir uma atualização de somas de verificação e conceitos de pacote mais recentes. Execute
choco new
ao criar pacotes, pois contém as notas mais atualizadas. chocolateyInstall.ps1 para instalador .exe
$name = 'Package Name' $installerType = 'exe' $url = 'http://path/to/download/installer.exe' $silentArgs = '/VERYSILENT' Install-ChocolateyPackage $name $installerType $silentArgs $url
Observação :Você precisa configurar a opção de linha de comando para tornar o instalador silencioso, por exemplo. .
/VERYSILENT
O nome do switch varia, dependendo do instalador. chocolateyInstall.ps1 para instalador .msi
OBSERVAÇÃO :Você precisa manter a compatibilidade com o Posh v2. Nem todos os sistemas operacionais suportados estão no Posh v2 (nem vem OOB com o Posh v3+). A melhor prática é trabalhar com a mais ampla compatibilidade de sistemas existente.
$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
Testando seu pacote
Observação 1 :eu recomendo realizar testes em uma máquina virtual, não em sua máquina de trabalho.
Observação 2 :O teste do pacote pode ser feito da mesma forma que o verificador. Dê uma olhada no Chocolatey Verifier Testing.
Para testar o pacote recém-criado, abra um shell de linha de comando e navegue até o diretório onde o arquivo *.nupkg arquivo está localizado. Em seguida, digite o seguinte:
choco install packageName -dv -s .
Este comando instalará o pacote diretamente de sua fonte. Se você encontrar coisas que precisa corrigir, use
--force (-f)
para remover e reinstalar o pacote do *.nupkg atualizado . Se você estiver testando especificamente chocolateyBeforeModify.ps1 , você precisa testar os cenários de atualização e desinstalação. Você precisa instalar uma versão do pacote com este arquivo primeiro porque semelhante t0 desinstala, antes de modificar é executado a partir do pacote instalado, não do pacote que você está instalando (como chocolateyInstall.ps1 faz). Observação 1 :
Force --force (-f)
deve ser usado apenas durante os testes subsequentes quando você estiver reinstalando o mesmo pacote que você alterou e não deve ser usado em cenários de uso regular. Definitivamente não deveria estar em scripts. Observação 2 :Se você usar um traço Semver em sua versão do pacote (como 1.0.0-beta ), você precisa usar o
-pre
trocar. Caso contrário, você receberá a mensagem 'Não foi possível encontrar o pacote ' erros da instalação do choco. Você também pode especificar -version 1.0.0-beta
para instalar a versão exata. O caractere ponto aponta para o diretório atual. Você pode especificar vários diretórios separados por um ponto e vírgula.
Envie seu pacote
Para enviar seu pacote por push depois de compilá-lo e testá-lo, digite o seguinte:
choco push packageName.nupkg -s sourceLocation
Onde:
packageName.nupkg
é o nome do nupkg que foi compilado com um número de versão como parte do nome do pacote;sourceLocation
é a localização da fonte para a qual você deseja enviar (por exemplo,-s https://chocolatey.org/
para o feed da comunidade Chocolatey).
Você precisa ter uma chave de API para o conjunto https://chocolatey.org/. Dê uma olhada no choco push.
Você também pode fazer login no chocolatey.org e enviar seu pacote de lá (não recomendado para pacotes acima de 2 MB).
Referências
Você pode usar os seguintes recursos para saber mais sobre a criação e distribuição de um pacote Chocolatey:
- https://chocolatey.org/docs/create-packages
- https://github.com/chocolatey-community/chocolatey-test-environm Chocolate ent