Udostępnij przez


Przesyłanie manifestu do repozytorium

Po utworzeniu manifestu pakietu opisującego aplikację możesz przesłać manifest do repozytorium Menedżera pakietów systemu Windows. Jest to repozytorium dostępne publicznie, które zawiera kolekcję manifestów, do których może uzyskać dostęp narzędzie zestawu . Aby przesłać manifest, przekażesz go do repozytorium open source https://github.com/microsoft/winget-pkgs w usłudze GitHub.

Po przesłaniu żądania ściągnięcia w celu dodania nowego manifestu do repozytorium GitHub zautomatyzowany proces zweryfikuje plik manifestu i sprawdzi, czy pakiet jest zgodny z zasadami Menedżera pakietów systemu Windows i nie jest znany jako złośliwy. Jeśli ta walidacja zakończy się pomyślnie, pakiet zostanie dodany do publicznego repozytorium Menedżera pakietów systemu Windows, aby można go było odnaleźć za pomocą narzędzia klienckiego zestawu narzędzi. Zwróć uwagę na rozróżnienie między manifestami w repozytorium GitHub typu open source i publicznym repozytorium Menedżera pakietów systemu Windows.

Ważne

Firma Microsoft zastrzega sobie prawo do odmowy przesłania z jakiegokolwiek powodu.

Walidacja manifestu

Po przesłaniu manifestu https://github.com/microsoft/winget-pkgs do repozytorium w usłudze GitHub manifest zostanie automatycznie zweryfikowany i oceniony pod kątem bezpieczeństwa ekosystemu systemu Windows. Manifesty mogą być również przeglądane ręcznie.

Aby uzyskać więcej informacji na temat procesu weryfikacji, zobacz sekcję procesu weryfikacji poniżej.

Jak przesłać manifest

Aby przesłać manifest do repozytorium, wykonaj następujące kroki.

Krok 1. Weryfikowanie manifestu

Narzędzie zestawu udostępnia weryfikuje polecenie, aby potwierdzić, że manifest został utworzony poprawnie. Aby zweryfikować manifest, użyj tego polecenia.

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

Jeśli walidacja zakończy się niepowodzeniem, użyj błędów, aby zlokalizować numer wiersza i wprowadzić poprawkę. Po zweryfikowaniu manifestu możesz przesłać go do repozytorium.

Krok 2. Testowanie manifestu za pomocą piaskownicy systemu Windows

Repozytorium Menedżera pakietów systemu Windows zawiera skrypt, który zainstaluje Menedżera pakietów systemu Windows w piaskownicy na potrzeby testowania przesyłania manifestu. Aby uruchomić skrypt programu PowerShell, przejdź do repozytorium winget-pkgs. W programie PowerShell wprowadź następujące polecenie:

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

Może być konieczne zaktualizowanie tego skryptu przy użyciu właściwej ścieżki do pliku manifestu: .\Tools\SandboxTest.ps1 <path to manifest or manifest folder>

Zobacz pełny skrypt testowy piaskownicy w repozytorium winget-pkgs.

Krok 3. Klonowanie repozytorium

Aby utworzyć fork repozytorium Windows Package Manager Community i sklonować repozytorium na lokalną maszynę:

  1. Przejdź do https://github.com/microsoft/winget-pkgs w przeglądarce i wybierz pozycję Fork. zrzut ekranu przedstawiający przycisk 'fork' na GitHub

  2. W wierszu polecenia systemu Windows lub programie PowerShell użyj następującego polecenia, aby sklonować rozwidlenie.

    git clone <your-fork-name>
    
  3. Jeśli wprowadzasz wiele zgłoszeń, utwórz gałąź zamiast forka. Obecnie zezwalamy tylko na jeden plik manifestu na przesłanie.

    git checkout -b <branch-name>
    

Krok 4. Dodawanie manifestu do repozytorium lokalnego

Pliki manifestu należy dodać do repozytorium w następującej strukturze folderów:

manifesty / list / wydawcy / aplikacji / w wersji

  • manifesty folder jest folderem głównym dla wszystkich manifestów w repozytorium.
  • Litera folderu jest pierwszą literą nazwy wydawcy małą literą. Na przykład m wydawcy Microsoft.
  • Folder wydawcy jest nazwą firmy publikującej oprogramowanie. Na przykład firma Microsoft.
  • Folder aplikacji to nazwa aplikacji lub narzędzia. Na przykład VSCode.
  • Folder wersji jest wersją aplikacji lub narzędzia. Na przykład 1.0.0.

Wartości PackageIdentifier i PackageVersion w manifeście muszą być zgodne z wydawcą, nazwami aplikacji i wersją w ścieżce folderu manifestu. Aby uzyskać więcej informacji, zobacz Tworzenie manifestu pakietu.

Krok 5. Przesyłanie manifestu do repozytorium zdalnego

Teraz możesz przesłać nowy manifest do zdalnego repozytorium.

  1. commit Użyj polecenia , aby dodać pliki i zatwierdzić zmianę i podać informacje dotyczące przesyłania.

    git commit -m "Submitting ContosoApp version 1.0.0" --all
    
  2. Użyj polecenia , push aby wypchnąć zmiany do repozytorium zdalnego.

    git push
    

Krok 6: Utwórz wniosek o połączenie

Po zatwierdzeniu zmian wróć do https://github.com/microsoft/winget-pkgs i utwórz prośbę o połączenie, aby scalić swój fork lub gałąź z gałęzią główną.

zrzut ekranu przedstawiający kartę żądania ściągnięcia

Proces przesyłania

Gdy tworzysz pull request, rozpocznie się zautomatyzowany proces, który sprawdza manifesty i weryfikuje twój pull request. Podczas tego procesu uruchomimy testy instalatora oraz zainstalowanych binariów, aby zweryfikować zgłoszenie.

Dodajemy etykiety do prośby o ściągnięcie , aby można było śledzić jej postęp. Aby uzyskać więcej informacji na temat etykiet i procesu, zobacz sekcję etykiet żądania ściągnięcia poniżej.

Po zakończeniu przesyłanie zostanie ręcznie przejrzyone przez moderatora, a po jego zatwierdzeniu aplikacja zostanie dodana do katalogu Menedżera pakietów systemu Windows.

Jeśli podczas tego procesu wystąpi błąd, otrzymasz powiadomienie, a nasze etykiety i bot pomogą Ci w naprawieniu przesyłki. Aby uzyskać listę typowych błędów, zobacz sekcję procesów weryfikacji poniżej.

Proces weryfikacji

Gdy utworzysz żądanie zmian w celu przesłania manifestu do repozytorium Menadżera Pakietów Windows, rozpocznie to proces automatyczny, który weryfikuje manifest i przetwarza żądanie zmian. Etykiety usługi GitHub są używane do udostępniania postępu i umożliwiają komunikowanie się z nami.

Oczekiwania dotyczące przesyłania

Wszystkie przesłania aplikacji do repozytorium Menedżera pakietów systemu Windows powinny być zgodne z zasadami repozytorium Menedżera pakietów systemu Windows.

Oczekiwania dotyczące przesłanych wniosków:

  • Manifest spełnia wymagania dotyczące schematu.
  • Wszystkie adresy URL w manifeście prowadzą do bezpiecznych witryn internetowych.
  • Instalator i aplikacja są wolne od wirusów. Pakiet może zostać zidentyfikowany jako złośliwe oprogramowanie przez pomyłkę. Jeśli uważasz, że jest to wynik fałszywie dodatni, możesz przesłać instalator do zespołu usługi Microsoft Defender w celu analizy.
  • Aplikacja instaluje i odinstalowuje poprawnie zarówno dla administratorów, jak i nieadministratorów.
  • Instalator obsługuje tryby nieinterakcyjne.
  • Wszystkie wpisy manifestu są dokładne i nie mylące.
  • Instalator pochodzi bezpośrednio z witryny internetowej wydawcy.

Aby uzyskać pełną listę zasad, zobacz Zasady Menedżera pakietów systemu Windows.

Etykiety żądań ściągnięcia

Podczas walidacji do komunikowania postępu stosuje się serie etykiet do żądań ściągnięcia. Niektóre etykiety przekierowują Cię do podjęcia działań, a inne zostaną skierowane do zespołu inżynierów menedżera pakietów systemu Windows.

Etykiety stanu

W poniższej tabeli opisano etykiety stanu , które mogą wystąpić.

Etykieta Szczegóły
Przeszło Azure-Pipeline Manifest zakończył przejście testowe. Czeka na zatwierdzenie. Jeśli podczas testu nie wystąpią żadne problemy, zostanie on automatycznie zatwierdzony. Jeśli test zakończy się niepowodzeniem, może zostać oznaczony do ręcznego przeglądu.
problemu blokującego Ta etykieta wskazuje, że nie można zatwierdzić żądania ściągnięcia, ponieważ występuje problem z blokowaniem. Często można określić, jaki jest problem z blokowaniem, korzystając z dołączonej etykiety błędu.
Wymaga uwagi Etykieta wskazuje, że prośba o pobranie musi zostać zbadana przez zespół programistów menedżera pakietów systemu Windows. To jest spowodowane niepowodzeniem testu, który wymaga ręcznego przeglądu, lub komentarzem dodanym do pull requesta przez społeczność.
Potrzebny-Feedback-Od-Autora Wskazuje, że wystąpił błąd podczas przesyłania. Ponownie przypiszemy ci żądanie ściągnięcia. Jeśli nie rozwiążesz problemu w ciągu 10 dni, bot zamknie pull request. etykiety needs-author-feedback są zwykle dodawane, gdy wystąpił błąd żądania ściągnięcia, który powinien zostać zaktualizowany, lub jeśli osoba przeglądająca żądanie ściągnięcia ma pytanie.
Sprawdzanie poprawności zakończone Wskazuje, że test zakończył się pomyślnie, a pull request zostanie scalony.

Etykiety błędów

W poniższej tabeli opisano etykiety błędów , które mogą wystąpić. Nie wszystkie przypadki błędów zostaną przypisane tobie od razu. Niektóre mogą wyzwalać ręczną walidację.

Etykieta Szczegóły
Błąd weryfikacji binarnej Aplikacja uwzględniona w tym żądaniu ściągnięcia nie przeszła testu Skanowania Instalatorów. Ten test został zaprojektowany w celu zapewnienia, że aplikacja jest instalowana we wszystkich środowiskach bez ostrzeżeń. Aby uzyskać więcej informacji na temat tego błędu, zobacz sekcję Błąd weryfikacji binarnej poniżej.
Przekroczenie limitu czasu analizy błędów Test Binary-Validation przekroczył limit czasu. Pull request zostanie przypisany do inżyniera Windows Package Managera do analizy.
błąd-Niezgodność-Hasha Nie można przetworzyć przesłanego manifestu, ponieważ podany skrót InstallerSha256 nie pasował do adresu URL instalatora. Zaktualizuj InstallerSha256 w pull request i spróbuj ponownie.
Błąd-Instalator-Dostępność Usługa sprawdzania poprawności nie może pobrać instalatora. Może to być związane z zablokowanymi zakresami adresów IP platformy Azure lub adres URL instalatora może być niepoprawny. Sprawdź, czy InstallerURL jest poprawny i spróbuj ponownie. Jeśli uważasz, że wystąpił błąd, dodaj komentarz, a pull request zostanie przypisany do inżyniera Menedżera Pakietów Windows w celu zbadania.
Manifest-Installer-Validation-Error Istnieją niespójności lub wartości, które nie występują w manifeście podczas oceny pakietu MSIX.
Manifest-Path-Error Pliki manifestu należy umieścić w określonej strukturze folderów. Ta etykieta wskazuje problem ze ścieżką twojego zgłoszenia. Na przykład struktura folderów nie ma wymaganego formatu. Zaktualizuj manifest, a następnie ponownie prześlij żądanie ściągnięcia.
Manifest-Validation-Error Przesłany manifest zawiera błąd składni. Rozwiąż problem ze składnią manifestu i prześlij go ponownie. Aby uzyskać szczegółowe informacje na temat formatu manifestu i schematu, zobacz wymagany format.
PullRequest-Error Żądanie ściągnięcia jest nieprawidłowe, ponieważ nie wszystkie przesłane pliki znajdują się w folderze manifestu lub istnieje więcej niż jeden pakiet lub wersja żądania ściągnięcia. Zaktualizuj pull request, aby rozwiązać problem i spróbuj ponownie.
Błąd sprawdzania poprawności adresu URL Test weryfikacji adresów URL nie mógł zlokalizować adresu URL i odpowiedział kodem stanu błędu HTTP (403 lub 404), albo test reputacji tego adresu URL zakończył się niepowodzeniem. Możesz zidentyfikować, który adres URL jest kwestionowany, przeglądając szczegóły sprawdzania żądania ściągnięcia . Aby rozwiązać ten problem, zaktualizuj adresy URL, których dotyczy problem, aby rozwiązać kod stanu błędu HTTP. Jeśli problem nie jest spowodowany kodem stanu błędu HTTP, możesz przesłać adres URL do sprawdzenia, aby uniknąć utraty reputacji.
Validation-Defender-Error Podczas testowania dynamicznego usługa Microsoft Defender zgłosiła problem. Aby odtworzyć ten problem, zainstaluj aplikację, a następnie uruchom pełne skanowanie w usłudze Microsoft Defender. Jeśli możesz odtworzyć problem, rozwiąż plik binarny lub przesłać go do analizy w celu uzyskania pomocy fałszywie dodatniej. Jeśli nie możesz odtworzyć problemu, dodaj komentarz, aby inżynierowie Menedżera Pakietów Windows mogli go zbadać.
Domena walidacji Test zidentyfikował domenę, kiedy InstallerURL nie zgadza się z oczekiwaną domeną. Zasady Menedżera pakietów Windows wymagają, aby InstallerUrl pochodziła bezpośrednio z lokalizacji wydania dostarczonej przez niezależnego dostawcę oprogramowania. Jeśli uważasz, że jest to fałszywe wykrycie, dodaj komentarz do żądania scalenia, aby inżynierowie Menedżera Pakietów systemu Windows mogli to zbadać.
Błąd walidacji Walidacja Menedżera pakietów systemu Windows nie powiodła się podczas ręcznego zatwierdzania. Spójrz na towarzyszący komentarz w celu poznania kolejnych kroków.
Validation-Wykonywalny-Błąd Podczas testowania instalacji test nie mógł zlokalizować podstawowej aplikacji. Upewnij się, że aplikacja jest poprawnie zainstalowana na wszystkich platformach. Jeśli Twoja aplikacja nie instaluje się, ale nadal powinna być uwzględniona w repozytorium, dodaj komentarz do pull requesta, aby inżynierowie Menedżera Pakietów Windows mogli to zbadać.
weryfikacja-skrótu nie powiodła się Podczas testowania instalacji nie można zainstalować aplikacji, ponieważ InstallerSha256 już nie odpowiada skrótowi InstallerURL. Taka sytuacja może wystąpić, gdy aplikacja jest dostępna pod estetycznym adresem URL, a instalator został zaktualizowany bez aktualizacji InstallerSha256. Aby rozwiązać ten problem, zaktualizuj InstallerSha256 powiązany z InstallerURL, a następnie prześlij ponownie.
Validation-HTTP-Error Adres URL używany w instalatorze nie używa protokołu HTTPS. Zaktualizuj InstallerURL, aby użyć protokołu HTTPS i ponownie prześlij Pull Request .
Walidacja-Pośrednia-URL Adres URL nie pochodzi bezpośrednio z serwera niezależnych dostawców oprogramowania. Testowanie ustaliło, że użyto przekierowania. Nie jest to dozwolone, ponieważ zasady Menedżera pakietów systemu Windows wymagają, aby InstallerUrl pochodził bezpośrednio z lokalizacji wydania dostawcy ISV. Usuń przekierowanie i prześlij ponownie.
Błąd weryfikacji instalacji Podczas ręcznej weryfikacji tego pakietu wystąpił błąd ogólny. Spójrz na towarzyszący komentarz w celu poznania kolejnych kroków.
Konflikt scalania walidacji Tego pakietu nie można zweryfikować z powodu konfliktu scalania. Proszę rozwiązać konflikt scalania i ponownie przesłać pull request.
Walidacja-MSIX-Dependency Pakiet MSIX ma zależność od pakietu, którego nie można rozpoznać. Zaktualizuj pakiet, aby uwzględnił brakujące składniki lub dodaj zależność do pliku manifestu i prześlij ponownie żądanie ściągnięcia.
Walidacja-Niezaakceptowany-URL Test zidentyfikował domenę, kiedy InstallerURL nie zgadza się z oczekiwaną domeną. Zasady Menedżera pakietów Windows wymagają, aby InstallerUrl pochodziła bezpośrednio z lokalizacji wydania dostarczonej przez niezależnego dostawcę oprogramowania.
Weryfikacja-Nienadzorowana-Nieudana Podczas instalacji upłynął limit czasu testu. Najprawdopodobniej jest to spowodowane tym, że aplikacja nie instaluje się w trybie dyskretnym. Może to być również spowodowane napotkaniem innego błędu i zatrzymaniem testu. Sprawdź, czy możesz zainstalować manifest bez danych wejściowych użytkownika. Jeśli potrzebujesz pomocy, dodaj komentarz do pull request, a inżynierowie Menedżera pakietów systemu Windows sprawę zbadają.
Validation-Uninstall-Error Podczas testów odinstalacji aplikacja nie została całkowicie usunięta. Aby uzyskać więcej szczegółów, zapoznaj się z towarzyszącym komentarzem.
Validation-VCRuntime-Dependency Pakiet ma zależność od środowiska uruchomieniowego języka C++, którego nie można rozpoznać. Zaktualizuj pakiet, aby uwzględnił brakujące składniki lub dodaj zależność do pliku manifestu i prześlij ponownie żądanie ściągnięcia.

Etykiety zasad zawartości

W poniższej tabeli wymieniono etykiety zasad polityki zawartości . Jeśli zostanie dodana jedna z tych etykiet, w metadanych manifestu wyzwolono dodatkową ręczną recenzję zawartości, aby upewnić się, że metadane są wykonywane zgodnie z zasadami menedżera pakietów systemu Windows .

Etykieta Szczegóły
Policy-Test-2.1 Zobacz ogólne wymagania dotyczące zawartości.
Policy-Test-2.2 Zobacz zawartość, w tym nazwy, logotypy, treści oryginalne i osób trzecich
Policy-Test-2.3 Zobacz Ryzyko szkody.
Policy-Test-2.4 Zobacz zniesławiające, oszczercze, skandaliczne i grożące.
Policy-Test-2.5 Zobacz obraźliwą zawartość.
Policy-Test-2.6 Zobacz Alkohol, Tytoń, Broń i Narkotyki.
Policy-Test-2.7 Zobacz treści dla dorosłych.
Policy-Test-2.8 Zobacz Działalność nielegalna.
Policy-Test-2.9 Zobacz nadmierne wulgaryzmy i nieodpowiednie treści.
Policy-Test-2.10 Zobacz Wymagania specyficzne dla kraju/regionu.
Polityka-Test-2.11 Zobacz Oceny Wieku.
Policy-Test-2.12 Zobacz zawartości wygenerowanej przez użytkownika.

Etykiety wewnętrzne

W poniższej tabeli wymieniono wewnętrzne etykiety błędów. W przypadku napotkania błędów wewnętrznych żądanie ściągnięcia zostanie przypisane do inżynierów Menedżera pakietów systemu Windows w celu zbadania.

Etykieta Szczegóły
internal-error-domain Wystąpił błąd podczas walidacji domeny adresu URL.
internal-error-dynamic-scan Wystąpił błąd podczas walidacji zainstalowanych plików binarnych.
internal-error-keyword-policy Wystąpił błąd podczas walidacji manifestu.
internal-error-manifest Wystąpił błąd podczas walidacji manifestu.
Błąd wewnętrzny - Brak architektur Wystąpił błąd, ponieważ test nie mógł określić architektury aplikacji.
Błąd wewnętrzny - brak obsługiwanych architektur Wystąpił błąd, ponieważ bieżąca architektura nie jest obsługiwana.
błąd wewnętrzny PR Wystąpił błąd podczas przetwarzania żądania pobrania.
internal-error-static-scan Wystąpił błąd podczas statycznej analizy instalatorów.
wewnętrzny błąd URL Wystąpił błąd podczas walidacji reputacji instalatorów.
Błąd wewnętrzny Podczas przebiegu testu wystąpił albo ogólny, albo nieznany błąd.

Błąd weryfikacji binarnej

Jeśli walidacja pull requestu nie powiedzie się w teście Instalatorów i otrzyma etykietę Błąd-Walidacji-Binarnej, oznacza to, że aplikacja nie zainstalowała się we wszystkich środowiskach.

Test skanowania instalatorów

Aby zapewnić doskonałe środowisko użytkownika instalacji aplikacji, Menedżer pakietów systemu Windows musi upewnić się, że wszystkie aplikacje są instalowane na komputerach bez błędów, niezależnie od środowiska. Jednym z kluczowych testów jest upewnienie się, że wszystkie aplikacje są instalowane bez ostrzeżeń w różnych popularnych konfiguracjach oprogramowania antywirusowego. System Windows udostępnia wbudowany program antywirusowy Microsoft Defender, ale wielu klientów korporacyjnych i użytkowników korzysta z innego oprogramowania antywirusowego.

Każde przesłanie do repozytorium Menedżera pakietów systemu Windows odbywa się za pośrednictwem kilku programów antywirusowych. Wszystkie te programy mają różne algorytmy wykrywania wirusów służące do identyfikowania potencjalnie niechcianych aplikacji (PUA) i złośliwego oprogramowania.

Rozwiązywanie problemów z błędami weryfikacji binarnej

Jeśli weryfikacja aplikacji zakończy się niepowodzeniem, firma Microsoft najpierw spróbuje zweryfikować u dostawcy oprogramowania antywirusowego, czy oflagowane oprogramowanie jest fałszywie dodatnie. W wielu przypadkach po powiadomieniu i weryfikacji dostawca oprogramowania antywirusowego aktualizuje algorytm, a aplikacja przechodzi.

W niektórych przypadkach dostawca oprogramowania antywirusowego nie może określić, czy wykryta anomalia kodu jest fałszywie dodatnia. W takim przypadku nie można dodać aplikacji do repozytorium Menedżera pakietów systemu Windows. Żądanie ściągnięcia jest odrzucane z etykietą Binary-Validation-Error.

Jeśli w pull request otrzymasz etykietę Binary-Validation-Error, zaktualizuj oprogramowanie, aby usunąć kod wykryty jako PUA.

Czasami autentyczne narzędzia używane do debugowania i działań niskopoziomowych są wyświetlane jako PUA przez oprogramowanie antywirusowe. Dzieje się tak, ponieważ wymagany kod debugowania ma podobny podpis do niechcianego oprogramowania. Mimo że ta praktyka kodowania jest legalna, repozytorium Menedżera pakietów systemu Windows niestety nie może zezwalać na te aplikacje.

Rozwiązywanie problemów z przesyłaniem

Jeśli przesyłanie menedżera pakietów systemu Windows zakończy się niepowodzeniem, możesz użyć etykiet opisanych powyżej, aby zbadać przyczynę niepowodzenia.

Aby zbadać błędy żądań ściągnięcia, wykonaj następujące czynności:

  1. Błąd pull request pojawia się na dole strony z ciągiem Niektóre sprawdzania nie powiodły się. Wybierz link Szczegóły obok nieudanej weryfikacji, aby przejść na stronę Azure Pipelines.

    Zrzut ekranu przedstawiający błąd żądania ściągnięcia.

  2. Na stronie Azure Pipelines wybierz łącze 0 błędów / 0 ostrzeżeń.

    Zrzut ekranu przedstawiający stronę usługi Azure Pipelines.

  3. Na następnej stronie wybierz zadanie, które zakończyło się niepowodzeniem.

    Zrzut ekranu przedstawiający szczegóły błędu.

  4. Na następnej stronie przedstawiono dane wyjściowe zadania, które zakończyło się niepowodzeniem. Dane wyjściowe powinny ułatwić zidentyfikowanie zmiany wymaganej do naprawienia manifestu.

    W poniższym przykładzie błąd wystąpił podczas zadania walidacji instalacji .

    Zrzut ekranu przedstawiający dane wyjściowe zadania, które zakończyło się niepowodzeniem.