Enviar seu manifesto para o repositório

Depois de criar um manifesto do pacote que descreva seu aplicativo, você estará pronto para enviar seu manifesto para o repositório do Gerenciador de Pacotes do Windows. Esse é um repositório voltado para o público que contém uma coleção de manifestos que a ferramenta winget pode acessar. Para enviar seu manifesto, você o carregará pagara o repositório https://github.com/microsoft/winget-pkgs de software livre no GitHub.

Após enviar uma solicitação de pull para adicionar um manifesto ao repositório do GitHub, um processo automatizado validará o arquivo de manifesto e verificará se o pacote está em conformidade com as políticas do Gerenciador de Pacotes do Windows e não é conhecido por ser mal-intencionado. Se essa validação for bem-sucedida, seu pacote será adicionado ao repositório do Gerenciador de Pacotes do Windows voltado ao público para que possa ser descoberto pela ferramenta de cliente winget. Observe a distinção entre os manifestos no repositório do GitHub de software livre e o repositório do Gerenciador de Pacotes do Windows voltado para o público.

Importante

A Microsoft se reserva o direito de recusar um envio por qualquer motivo.

Validação do manifesto

Quando você envia um manifesto para o repositório https://github.com/microsoft/winget-pkgs no GitHub, seu manifesto será validado e avaliado automaticamente quanto à segurança do ecossistema do Windows. Os manifestos também podem ser examinados manualmente.

Para saber mais sobre o processo de validação, confira a seção Processo de validação abaixo.

Como enviar seu manifesto

Para enviar um manifesto para o repositório, siga estas etapas.

Etapa 1: Validar seu manifesto

A ferramenta winget fornece o comando validate para confirmar que você criou o manifesto corretamente. Para validar seu manifesto, use este comando.

winget validate \<path-to-the-manifests>

Se a validação falhar, use os erros para localizar o número de linha e fazer uma correção. Depois que o manifesto for validado, você poderá enviá-lo para o repositório.

Etapa 2: Testar o manifesto com a Área Restrita do Windows

O repositório do Gerenciador de Pacotes do Windows inclui um script que instalará o Gerenciador de Pacotes do Windows em uma área restrita para testar envios de manifesto. Para executar o script do PowerShell, navegue até o repositório winget-pkgs. No PowerShell, digite o seguinte comando:

powershell .\Tools\SandboxTest.ps1 manifests\m\Microsoft\VisualStudioCode\1.56.0

Talvez seja necessário atualizar esse script com o caminho correto para o arquivo de manifesto: .\Tools\SandboxTest.ps1 <path to manifest or manifest folder>

Confira o script de teste de área restrita completo no repositório winget-pkgs.

Etapa 3: Clonar o repositório

Para criar um fork do repositório Community do Gerenciador de Pacotes do Windows e clonar o repositório no computador local:

  1. Acesse https://github.com/microsoft/winget-pkgs no navegador e clique em Criar fork. screenshot of fork button on GitHub

  2. No prompt de comando do Windows ou do PowerShell, use o comando a seguir para clonar o fork.

    git clone <your-fork-name>
    
  3. Se você estiver fazendo vários envios, crie um branch em vez de um fork. No momento, permitimos apenas um arquivo de manifesto por envio.

    git checkout -b <branch-name>
    

Etapa 4: Adicionar o manifesto ao repositório local

É necessário adicionar os arquivos de manifesto ao repositório na seguinte estrutura de pastas:

manifestos / letra / distribuidor / aplicativo / versão

  • A pasta manifests é a pasta raiz para todos os manifestos no repositório.
  • A pasta letra representa a primeira letra do nome do distribuidor em letra minúscula. Por exemplo, m representa o distribuidor Microsoft.
  • A pasta publisher é o nome da empresa que publica o software. Por exemplo, Microsoft.
  • A pasta application é o nome do aplicativo ou da ferramenta. Por exemplo, VSCode.
  • A pasta versão representa a versão do aplicativo ou da ferramenta. Por exemplo: 1.0.0.

Os valores de PackageIdentifier e PackageVersion no manifesto devem corresponder ao distribuidor, aos nomes de aplicativo e à versão no caminho da pasta do manifesto. Para obter mais informações, confira Criar seu manifesto do pacote.

Etapa 5: Enviar o manifesto para o repositório remoto

Agora você já pode enviar seu novo manifesto por push para o repositório remoto.

  1. Use o comando commit para adicionar arquivos e confirmar a alteração e fornecer informações sobre o envio.

    git commit -m "Submitting ContosoApp version 1.0.0" --all
    
  2. Use o comando push para enviar por push as alterações para o repositório remoto.

    git push
    

Etapa 6: Criar uma solicitação de pull

Após enviar suas alterações por push, volte para https://github.com/microsoft/winget-pkgs e crie uma solicitação de pull para mesclar a bifurcação ou o branch com o branch principal.

screenshot of pull request tab

Processo de envio

Ao criar uma solicitação de pull, um processo automatizado será iniciado que validará os manifestos e verificará sua solicitação pull. Durante esse processo, executaremos testes no instalador e nos binários instalados para validar o envio.

Adicionaremos rótulos à sua solicitação de pull para que seja possível rastrear o respectivo progresso. Para saber mais sobre rótulos e o processo, confira a seção Rótulos de solicitação de pull abaixo.

Após a conclusão, o envio será revisado manualmente por um moderador e, depois de aprovado, o aplicativo será adicionado ao catálogo do Gerenciador de Pacotes do Windows.

Caso ocorra um erro durante o processo, você será notificado. Além disso, nossos rótulos e nosso bot ajudarão você a corrigir o envio. Para obter a lista de erros comuns, confira a seção do processo de validação abaixo.

Processo de validação

Quando você cria uma solicitação de pull para enviar o manifesto ao repositório do Gerenciador de Pacotes do Windows, isso inicia um processo de automação que valida o manifesto e processa a solicitação de pull. Os rótulos do GitHub são usados para compartilhar o progresso e permitir que você se comunique conosco.

Expectativas de envio

Todos os envios de aplicativos para o repositório do Gerenciador de Pacotes do Windows devem aderir às políticas de repositório do Gerenciador de Pacotes do Windows.

Expectativas de envios:

  • O manifesto está em conformidade com os requisitos do esquema.
  • Todas as URLs no manifesto levam a sites seguros.
  • O instalador e o aplicativo não contêm vírus. O pacote pode ser identificado como um malware por engano. Caso considere que ele seja um falso positivo, será possível enviar um instalador para a equipe do Microsoft Defender a fim de executar uma análise.
  • O aplicativo é instalado e desinstalado corretamente para administradores e não administradores.
  • O instalador dá suporte a modos não interativos.
  • Todas as entradas de manifesto são precisas e não enganosas.
  • O instalador é fornecido diretamente do site do editor.

Para obter uma lista completa de políticas, confira as Políticas do Gerenciador de Pacotes do Windows.

Rótulos de solicitação pull

Durante a validação, uma série de rótulos são aplicados às solicitações de pull para comunicar o progresso. Alguns rótulos vão direcionar você para executar uma ação, enquanto outros serão direcionados para a equipe de engenharia do Gerenciador de Pacotes do Windows.

Rótulos de status

A tabela a seguir descreverá os rótulos de status que você poderá encontrar.

Rótulo Detalhes
Azure-Pipeline-Passed O manifesto concluiu a fase de teste. Ele está aguardando aprovação. Caso nenhum problema seja encontrado durante a fase de teste, ele será aprovado de modo automático. Caso haja falha em um teste, ele poderá ser sinalizado para obter uma revisão manual.
Blocking-Issue Este rótulo indica que não foi possível aprovar a solicitação de pull porque há um problema de bloqueio. Muitas vezes é possível identificar o problema de bloqueio analisando o rótulo de erro incluído.
Needs-Attention Este rótulo indica que a solicitação de pull precisa ser investigada pela equipe de desenvolvimento do Gerenciador de Pacotes do Windows. Isso ocorre devido a uma falha de teste que precisa de uma revisão manual ou um comentário adicionado à solicitação de pull pela comunidade.
Needs-Author-Feedback Indica se há uma falha no envio. Vamos transferir a solicitação de pull de volta para você. Caso não solucione o problema em dez dias, o bot fechará a solicitação de pull. Normalmente, os rótulos Needs-Author-Feedback são adicionados quando ocorre uma falha na solicitação de pull que deve ser atualizada ou quando a pessoa que está examinando a solicitação de pull tem uma dúvida.
Validation-Completed Indica se a fase de teste foi concluída com êxito e que sua solicitação de pull será mesclada.

Rótulos de erros

A tabela a seguir descreverá os rótulos de erros que você pode encontrar. Nem todos os casos de erros serão atribuídos a você de modo imediato. Alguns poderão disparar uma validação manual.

Rótulo Detalhes
Binary-Validation-Error Houve falha na aprovação do aplicativo incluído nesta solicitação de pull durante a execução do teste de Verificação de Instaladores. Esse teste foi projetado para garantir a instalação do aplicativo em todos os ambientes sem gerar avisos. Para saber mais sobre esse erro, confira a seção Erro de validação binária abaixo.
Error-Analysis-Timeout O teste Binary-Validation-Test expirou. Portanto, a solicitação de pull será atribuída a um engenheiro do Gerenciador de Pacotes do Windows para realizar uma investigação.
Error-Hash-Mismatch Não foi possível processar o manifesto enviado porque não houve correspondência com o hash InstallerSha256 fornecido para o InstallerURL. Atualize o InstallerSha256 na solicitação de pull, depois tente de novo.
Error-Installer-Availability Não foi possível baixar o instalador por meio do serviço de validação. Talvez isso esteja relacionado ao bloqueio dos intervalos de IP do Azure ou a URL do instalador talvez esteja incorreta. Verifique se o InstallerURL é adequado, depois tente de novo. Caso considere que a falha ocorreu com um erro, adicione um comentário. Desse modo, a solicitação de pull será atribuída a um engenheiro do Gerenciador de Pacotes do Windows para realizar uma investigação.
Manifest-Installer-Validation-Error Há inconsistências ou valores não presentes no manifesto durante a avaliação de um pacote MSIX.
Manifest-Path-Error Os arquivos de manifesto deverão ser inseridos em uma estrutura de pasta específica. Este rótulo indica se há um problema com o caminho do seu envio. Por exemplo, a estrutura de pastas não tem o formato necessário. Atualize o manifesto e o caminho, depois reenvie sua solicitação de pull.
Manifest-Validation-Error o manifesto enviado contém um erro de sintaxe. Solucione o problema de sintaxe, depois reenvie o manifesto. Para obter mais detalhes sobre o formato e o esquema do manifesto, confira o formato necessário.
PullRequest-Error A solicitação de pull é inválida porque nem todos os arquivos enviados estão na pasta do manifesto ou há mais de um pacote/versão na solicitação de pull. Atualize sua solicitação de pull para solucionar o problema, depois tente de novo.
URL-Validation-Error Não foi possível localizar a URL usando o Teste de Validação de URLs que respondeu com um código de status de erro HTTP (403 ou 404) ou ocorreu uma falha no teste de reputação da URL. É possível identificar qual URL está na solicitação examinando os detalhes de verificação da solicitação de pull. Para solucionar esse problema, atualize as URLs da solicitação a fim de resolver o código de status de erro HTTP. Caso o problema não seja devido a um código de status de erro HTTP, será possível enviar a URL para revisão a fim de evitar a falha de reputação.
Validation-Defender-Error Durante o teste dinâmico, o Microsoft Defender relatou um problema. Para reproduzir esse problema, instale o aplicativo, depois execute uma verificação completa no Microsoft Defender. Caso seja possível reproduzir o problema, corrija o binário ou envie-o para análise a fim de obter assistência para lidar com um falso positivo. Caso não seja possível reproduzir o problema, adicione um comentário para que os engenheiros do Gerenciador de Pacotes do Windows realizem uma investigação.
Validation-Domain O teste determinará o domínio caso não haja uma correspondência entre o InstallerURL e o domínio esperado. As políticas do Gerenciador de Pacotes do Windows exigem que o InstallerUrl seja fornecido diretamente do local de lançamento do ISV. Caso considere que essa é uma detecção falsa, adicione um comentário à solicitação de pull para que os engenheiros do Gerenciador de Pacotes do Windows realizem uma investigação.
Validation-Error Houve falha na validação do Gerenciador de Pacotes do Windows durante uma aprovação manual. Examine o comentário correspondente para executar as próximas etapas.
Validation-Executable-Error Não foi possível localizar o aplicativo primário durante o teste de instalação. Verifique se o aplicativo está sendo instalado de modo correto em todas as plataformas. Caso seu aplicativo não instale outro aplicativo, porém ainda deva ser incluído no repositório, adicione um comentário à solicitação de pull para que os engenheiros do Gerenciador de Pacotes do Windows realizem uma investigação.
Validation-Hash-Verification-Failed Durante o teste de instalação, uma falha ocorre na instalação do aplicativo porque o InstallerSha256 não corresponde mais ao hash InstallerURL. Isso pode ocorrer caso o aplicativo esteja protegido por uma URL intuitiva e o instalador seja atualizado sem uma atualização de InstallerSha256. Para solucionar esse problema, atualize o InstallerSha256 associado ao InstallerURL, depois execute o reenvio.
Validation-HTTP-Error A URL usada no instalador não usa o protocolo HTTPS. Atualize o InstallerURL para usar o HTTPS e reenviar a Solicitação de Pull.
Validation-Indirect-URL A URL não é fornecida diretamente do servidor de ISVs. O teste identificou que um redirecionador foi usado. Isso não é permitido porque as políticas do Gerenciador de Pacotes do Windows exigem que o InstallerUrl seja fornecido diretamente do local de lançamento do ISV. Remova o redirecionamento, depois execute o reenvio.
Validation-Installation-Error Um erro geral ocorreu durante a validação manual desse pacote. Examine o comentário correspondente para executar as próximas etapas.
Validation-Merge-Conflict Não foi possível validar esse pacote devido a um conflito de mesclagem. Solucione o conflito de mesclagem e reenvie sua solicitação de pull.
Validation-MSIX-Dependency Não foi possível resolver uma dependência no pacote MSIX. Atualize o pacote para incluir os componentes ausentes ou adicione a dependência ao arquivo de manifesto e reenvie a solicitação de pull.
Validation-Unapproved-URL O teste determinará o domínio caso não haja uma correspondência entre o InstallerURL e o domínio esperado. As políticas do Gerenciador de Pacotes do Windows exigem que o InstallerUrl seja fornecido diretamente do local de lançamento do ISV.
Validation-Unattended-Failed Durante a instalação, o teste atingiu o tempo limite. Isso provavelmente ocorreu porque o aplicativo não está sendo instalado de modo silencioso. Também pode ser devido a outro erro encontrado que interrompeu o teste. Verifique se é possível instalar o manifesto sem a entrada de usuário. Caso precise de assistência, adicione um comentário à solicitação de pull para que os engenheiros do Gerenciador de Pacotes do Windows realizem uma investigação.
Validation-Uninstall-Error Não foi possível limpar o aplicativo de modo integral durante o teste de instalação nem após a desinstalação. Confira o comentário correspondente para obter mais detalhes.
Validation-VCRuntime-Dependency Não foi possível resolver uma dependência que o pacote tem no runtime do C++. Atualize o pacote para incluir os componentes ausentes ou adicione a dependência ao arquivo de manifesto e reenvie a solicitação de pull.

Rótulos de políticas de conteúdo

A tabela a seguir listará os rótulos de políticas de conteúdo. Caso um desses rótulos seja adicionado, uma revisão manual de conteúdo complementar será disparada nos metadados do manifesto para garantir que os metadados estejam seguindo as políticas do Gerenciador de Pacotes do Windows.

Rótulo Detalhes
Policy-Test-2.1 Confira os Requisitos gerais do conteúdo.
Policy-Test-2.2 Confira um Conteúdo que inclui nomes/logotipos originais e de terceiros
Policy-Test-2.3 Confira o Risco de danos.
Policy-Test-2.4 Confira um Conteúdo difamatório, calunioso e ameaçador.
Policy-Test-2.5 Confira um Conteúdo ofensivo.
Policy-Test-2.6 Confira um Conteúdo sobre álcool, tabaco, armas e drogas.
Policy-Test-2.7 Confira um Conteúdo para adulto.
Policy-Test-2.8 Confira uma Atividade ilícita.
Policy-Test-2.9 Confira Blasfêmias graves e conteúdo impróprio.
Policy-Test-2.10 Confira Requisitos específicos ao país/região.
Policy-Test-2.11 Confira a Classificação etária.
Policy-Test-2.12 Confira um Conteúdo gerado pelo usuário.

Rótulos internos

A tabela a seguir listará rótulos de erros internos. Quando erros internos são identificados, sua solicitação de pull será atribuída aos engenheiros do Gerenciador de Pacotes do Windows para realizar uma investigação.

Rótulo Detalhes
Internal-Error-Domain Um erro ocorreu durante a validação de domínio da URL.
Internal-Error-Dynamic-Scan Um erro ocorreu durante a validação dos binários instalados.
Internal-Error-Keyword-Policy Um erro ocorreu durante a validação do manifesto.
Internal-Error-Manifest Um erro ocorreu durante a validação do manifesto.
Internal-Error-NoArchitectures Um erro ocorreu porque não foi possível determinar a arquitetura do aplicativo usando um teste.
Internal-Error-NoSupportedArchitectures Um erro ocorreu porque não há suporte para a arquitetura atual.
Internal-Error-PR Um erro ocorreu durante o processamento da solicitação de pull.
Internal-Error-Static-Scan Um erro ocorreu durante uma análise estática dos instaladores.
Internal-Error-URL Um erro ocorreu durante a validação de reputação dos instaladores.
Internal-Error Uma falha genérica ou um erro desconhecido ocorreu durante a fase de teste.

Erro de validação binária

Quando a validação da solicitação de pull falha no teste de Varredura de instaladores e recebe um rótulo Binary-Validation-Error, ocorreu uma falha e a instalação do aplicativo não foi feita em todos os ambientes.

Teste de varredura de instaladores

Para que a experiência do usuário de instalação de aplicativos seja excelente, o Gerenciador de Pacotes do Windows precisa garantir que todos os aplicativos sejam instalados nos computadores sem erros, independentemente do ambiente. Um teste importante é garantir que todos os aplicativos sejam instalados sem avisos em várias configurações de antivírus populares. O Windows fornece o programa antivírus interno do Microsoft Defender, mas muitos clientes e usuários corporativos usam outros softwares antivírus.

Cada envio ao repositório do Gerenciador de Pacotes do Windows passa por vários programas antivírus. Todos esses programas têm diferentes algoritmos de detecção de vírus para identificar PUA (aplicativo potencialmente indesejado) e malware.

Solucionar erros de validação binária

Quando ocorre falha na validação de um aplicativo, primeiro a Microsoft tenta verificar com os fornecedores do antivírus se o software sinalizado é um falso positivo. Em vários casos, após a notificação e a validação, o fornecedor do antivírus atualiza o algoritmo e o aplicativo é aprovado.

Em alguns casos, o fornecedor do antivírus não consegue determinar se a anomalia de código detectada é um falso positivo. Nesse caso, o aplicativo não pode ser adicionado ao repositório do Gerenciador de Pacotes do Windows. A solicitação de pull é rejeitada com um rótulo Binary-Validation-Error.

Se um rótulo Binary-Validation-Error aparecer na solicitação de pull, atualize o software para remover o código detectado como PUA.

Às vezes, ferramentas originais usadas para executar atividades de depuração e secundárias aparecem como PUA para os fornecedores de antivírus. Isso ocorre porque o código de depuração necessário tem uma assinatura semelhante à do software indesejado. Embora essa prática de codificação seja legítima, o repositório do Gerenciador de Pacotes do Windows não pode permitir esses aplicativos.

Solução de problemas de envio

Se o envio do Gerenciador de Pacotes do Windows falhar, será possível usar os rótulos descritos acima para investigar o motivo da falha.

Para investigar falhas de solicitação de pull, execute as seguintes etapas:

  1. Uma falha de solicitação de pull aparece na parte inferior da página da Web com a cadeia de caracteres Algumas verificações não foram bem-sucedidas. Selecione o link Detalhes ao lado de uma validação com falha para acessar a página do Azure Pipelines.

    Screenshot of a pull request failure.

  2. Na página do Azure Pipelines, selecione o link 0 erros /0 avisos.

    Screenshot of the Azure Pipelines page.

  3. Na próxima página, selecione o trabalho com falha.

    Screenshot of the error details.

  4. A próxima página exibirá a saída do trabalho com falha. A saída ajudará você a identificar a alteração que precisa ser executada para corrigir o manifesto.

    No exemplo a seguir, a falha ocorreu durante a tarefa de Validação da Instalação.

    Screenshot of the failed job output.