Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Aby utworzyć plik konfiguracji WinGet:
- Utwórz plik YAML zgodnie z konwencją nazewnictwa plików Konfiguracji WinGet.
- Zapoznaj się z formatem pliku konfiguracji WinGet i połącz bieżący schemat pliku .
- Określ listę asercji (wymagane warunki wstępne) i Zasoby (lista wymaganych instalacji i konfiguracji ustawień w celu uzyskania środowiska deweloperskiego maszyny do żądanego stanu) do uwzględnienia w pliku.
- Zidentyfikuj moduły programu PowerShell i zasoby konfiguracji żądanego stanu (DSC) potrzebne do wykonania żądanych zadań konfiguracyjnych.
- Określ dyrektywy i ustawienia wymagane dla każdego zasobu konfiguracji.
- Określ zależności dla każdego zasobu.
Dowiedz się więcej o korzystaniu z polecenia WinGet configure.
Format pliku
Menedżer pakietów systemu Windows używa manifestów (plików YAML) do lokalizowania i instalowania pakietów dla użytkowników systemu Windows. Pliki konfiguracji WinGet używają tego samego formatu stylu YAML, dodając specyfikację schematu JSON, aby ułatwić zdefiniowanie struktury i walidacji pliku. Aby dodatkowo pomóc w wykrywaniu, czy format pliku konfiguracji WinGet jest prawidłowy, zalecamy użycie programu Visual Studio Code z rozszerzeniem YAML firmy RedHat w celu obsługi odpowiedniej składni, pomocy w wykrywaniu błędów formatowania, zapewnienia obsługi tzw. hover i automatycznego uzupełniania (po połączeniu z plikiem schematu JSON) oraz zapewnienia prawidłowego formatowania.
Konwencja nazewnictwa plików
Konwencja nazewnictwa pliku konfiguracji WinGet używa rozszerzenia pliku ".winget" (na przykład configuration.winget). W przypadku projektów opartych na usłudze Git domyślna konfiguracja powinna być przechowywana w katalogu ".config" pod adresem: ./config/configuration.winget. W niektórych przypadkach może być odpowiedni więcej niż jeden plik konfiguracji, biorąc pod uwagę różne łańcuchy narzędzi lub preferencje użytkownika. Te dodatkowe pliki konfiguracji powinny również znajdować się w katalogu ".config".
Sekcje pliku konfiguracji WinGet
Plik konfiguracji WinGet jest oddzielony dwoma podstawowymi sekcjami:
- Asercji: warunki wstępne wymagane do uruchomienia konfiguracji.
- Zasoby: lista oprogramowania i narzędzi do zainstalowania, ustawienia konfiguracji dla tych instalacji oraz ustawienia konfiguracji systemu operacyjnego Windows.
Sekcja Asercji
Lista twierdzeń obejmuje warunki wstępne wymagane dla zasobów wymienionych w tym pliku konfiguracji WinGet, aby mogły one działać pomyślnie na komputerze, na którym plik jest uruchamiany. Asercji można wykonać równolegle i nie wymagają żadnej kolejności sekwencyjnej.
Przykładowa aseracja:
- Wersja systemu operacyjnego: Minimalna wersja systemu operacyjnego* zainstalowana na maszynie. Ponieważ funkcje są dodawane wraz z upływem czasu do systemu operacyjnego, niektóre są przywracane do obsługi wcześniejszych wersji, a niektóre nie są. Zawsze warto sprawdzić minimalną wersję systemu operacyjnego, aby określić, czy określone narzędzie lub funkcja, które są wymagane do konfiguracji, mogą być obsługiwane. Na przykład WinGet (Menedżer pakietów systemu Windows) wymaga co najmniej systemu Windows 10 w wersji 1809 lub nowszej. Wszystkie starsze wersje systemu Windows nie obsługują winGet. * Istnieje możliwość zmiany stanu systemu przez zasoby DSC programu PowerShell, ale nie byłoby odpowiednie wywołanie usługi Windows Update i zmodyfikowanie wersji systemu operacyjnego w konfiguracji projektu dla projektu typu open source.
Jeśli asercja zwraca wartość "false", aby wskazać, że system nie znajduje się w żądanym stanie, każdy zasoby identyfikujące tę asercję jako zależność przy użyciu pola dependsOn zostaną pominięte i nie zostaną uruchomione. W takim przypadku, mimo że żadne zmiany konfiguracji nie zostały zastosowane do środowiska systemu Windows, ta konfiguracja zostanie uznana za pomyślny wynik.
Sekcja Zasobów
Lista Zasobów obejmuje wszystkie oprogramowanie, narzędzia, pakiety itp., które należy zainstalować, oraz ustawienia konfiguracji dla systemu operacyjnego Windows lub zainstalowanych aplikacji. Każdy zasób musi mieć nazwę, opis dyrektywy, która ma zostać przeprowadzona, oraz moduł programu PowerShell, który będzie odpowiedzialny za przeprowadzenie tej dyrektywy, a także wszelkie skojarzone ustawienia lub zależności.
Przykładowy plik konfiguracji WinGet
Poniżej przedstawiono przykładowy plik sformatowany w konfiguracji configuration.winget WinGet:
# yaml-language-server: $schema=https://aka.ms/configuration-dsc-schema/0.2
properties:
assertions:
- resource: Microsoft.Windows.Developer/OsVersion
directives:
description: Verify min OS version requirement
allowPrerelease: true
settings:
MinVersion: '10.0.22000'
resources:
- resource: Microsoft.Windows.Settings/WindowsSettings
directives:
description: Enable Developer Mode
allowPrerelease: true
securityContext: elevated
settings:
DeveloperMode: true
- resource: Microsoft.WinGet.DSC/WinGetPackage
id: vsPackage
directives:
description: Install Visual Studio 2022 Community
securityContext: elevated
settings:
id: Microsoft.VisualStudio.2022.Community
source: winget
- resource: Microsoft.VisualStudio.DSC/VSComponents
dependsOn:
- vsPackage
directives:
description: Install required VS workloads from vsconfig file
allowPrerelease: true
securityContext: elevated
settings:
productId: Microsoft.VisualStudio.Product.Community
channelId: VisualStudio.17.Release
vsConfigFile: '${WinGetConfigRoot}\..\.vsconfig'
includeRecommended: true
configurationVersion: 0.2.0
Składniki tego pliku składają się z:
Schemat: pierwszy wiersz w pliku konfiguracji powinien zawierać następujący komentarz:
# yaml-language-server: $schema=https://aka.ms/configuration-dsc-schema/<most recent schema version #>w celu określenia schematu DSC, do którego odnosi się plik. Aby znaleźć najnowszą wersję schematu konfiguracji WinGet, przejdź do strony https://aka.ms/configuration-dsc-schema/. Najnowszy numer schematu w momencie tego przykładu to0.2, więc schemat został wprowadzony jako:# yaml-language-server: $schema=https://aka.ms/configuration-dsc-schema/0.2.Właściwości: węzeł główny dla pliku konfiguracyjnego
propertiesmusi zawierać wersję konfiguracji (configurationVersion: 0.2.0w tym przykładzie). Ta wersja powinna zostać zaktualizowana zgodnie z aktualizacjami pliku konfiguracji. Węzeł właściwości powinien zawieraćassertionswęzeł iresourceswęzeł.Stwierdzenia: podaj listę warunków wstępnych (lub przedwarunków) wymaganych do tej konfiguracji w tej sekcji.
Zasoby: sekcje
assertionslisty iresourcesskładają się z poszczególnychresourcewęzłów do reprezentowania skonfigurowanego zadania. Elementresourcepowinien mieć nazwę modułu programu PowerShell, po którym następuje nazwa zasobu DSC modułu, który zostanie wywołany w celu zastosowania żądanego stanu:{ModuleName}/{DscResource}. Każdy zasób musi zawieraćdirectivesisettings. Opcjonalnie może również zawieraćidwartość. Podczas stosowania konfiguracji narzędzie WinGet będzie wiedzieć, jak zainstalować moduł z galerii programu PowerShell i wywołać określony zasób DSC .Dyrektywy: Sekcja
directiveszawiera informacje o module i zasobie. Ta sekcja powinna zawierać wartośćdescriptiondo opisania zadania konfiguracyjnego wykonywanego przez moduł. WartośćallowPrereleaseumożliwia wybranie, czy konfiguracja będzie mogła (true) używać modułów przedpremierowych z galerii programu PowerShell. Niektóre zasoby DSC mogą wymagać uruchomienia z uprawnieniami administratora. PolesecurityContext: elevatedw sekcji z dyrektywami zasobu jasno wskazuje to wymaganie. Po ustawieniu wartościelevatedWinGet wyświetli monit o jednorazowe zatwierdzenie kontroli konta użytkownika na początku konfiguracji. Następnie usługa WinGet uruchomi dwa procesy: jeden, który uruchamia zasoby z podwyższonym poziomem uprawnień, a drugi z uprawnieniami bieżącego użytkownika.Ustawienia: wartość
settingszasobu reprezentuje kolekcję par name-value przekazywanych do zasobu DSC programu PowerShell. Ustawienia mogą reprezentować dowolne elementy, od tego, czy tryb dewelopera jest włączony, do stosowania klucza reg, czy do ustanawiania określonego ustawienia sieci.Zależności: Wartość
dependsOnzasobu określa, czy przed rozpoczęciem tego zadania należy ukończyć jakiekolwiek inne twierdzenia lub zasoby. Jeśli zależność nie powiedzie się, ten zasób również automatycznie zakończy się niepowodzeniem.identyfikator: unikatowy identyfikator określonego wystąpienia zasobu. Wartość
idmożna użyć, jeśli inny zasób wymaga, aby ten zasób został zastosowany jako pierwszy.
Organizowanie sekcji Zasoby
Istnieje wiele podejść do rozważenia podczas określania sposobu organizowania sekcji Zasoby w pliku konfiguracji WinGet. Listę plików można organizować, wykonując następujące czynności:
- Kolejność wykonywania: organizowanie listy zasobów zgodnie z kolejnością logiczną, w której powinny być wykonywane. Takie podejście może pomóc użytkownikowi zrozumieć i postępować zgodnie z krokami automatyzacji wykonywanymi po uruchomieniu pliku — co jest instalowane jako pierwsze, drugie, jakie ustawienie jest aktualizowane trzeci itd.
- Możliwość niepowodzenia: Organizowanie listy zasobów zgodnie z prawdopodobieństwem potencjalnej awarii może pomóc użytkownikom wychwytywać problemy na wczesnym etapie procesu konfiguracji i pomóc im zrozumieć, dlaczego pozostałe kroki mogą zakończyć się niepowodzeniem, umożliwiając im identyfikowanie i wprowadzanie niezbędnych zmian przed zainwestowaniem dużej ilości czasu.
- Grupowanie podobnych typów zasobów: Organizowanie listy zasobów przez grupowanie podobnych typów zasobów jest typowym podejściem w metodologiach inżynierii oprogramowania i może być najbardziej znane Tobie lub innym deweloperom korzystającym z pliku konfiguracji.
Zalecamy dołączenie pliku README.md z dowolnym opublikowanym plikiem konfiguracji WinGet typu open source zawierającym podejście organizacyjne struktury plików.
Używanie zmiennej ${WinGetConfigRoot}
Niektóre zasoby DSC mogą przyjmować parametr określający ścieżkę pliku. Zamiast określać pełną ścieżkę, możesz użyć zmiennej ${WinGetConfigRoot} do zdefiniowania katalogu roboczego, w którym winget configure jest wykonywane polecenie, i dołączyć ścieżkę względną, aby wskazać ten plik. Jest to przydatne w przypadku uogólniania pliku konfiguracji, aby był niezależny od komputera. Zasób Microsoft.VisualStudio.DSC/VSComponents w powyższym przykładzie przedstawia tę funkcję, używając ${WinGetConfigRoot} do wskazania pliku .vsconfig w katalogu głównym projektu. Oznacza to również, że użytkownik powinien upewnić się, że plik docelowy istnieje w ścieżce względnej względem bieżącego katalogu roboczego przed wykonaniem polecenia winget configure.
Gdzie znaleźć moduły zasobów DSC programu PowerShell
Zapoznaj się z listą gotowych do użycia ("skrzynka odbiorcza") zasobów konfiguracji żądanego stanu programu PowerShell obsługiwanych przez firmę Microsoft, w tym:
- środowisko: Zarządzaj zmienną środowiskową dla maszyny lub procesu.
- MsiPackage: zainstaluj lub odinstaluj pakiet MSI.
- Rejestr: Zarządzaj kluczem lub wartością rejestru.
- Skrypt: uruchom bloki skryptów programu PowerShell.
- Usługa: Zarządzanie usługą systemu Windows.
- WindowsFeature: instalowanie lub odinstalowywanie roli lub funkcji systemu Windows.
- WindowsProcess: uruchamianie lub zatrzymywanie procesu systemu Windows.
Moduły zasobów DSC programu PowerShell można również znaleźć w galerii PowerShell . Ta galeria hostuje setki modułów programu PowerShell zawierających zasoby usługi Desired State Configuration (DSC) przesłane przez społeczność użytkowników. Wyniki wyszukiwania można filtrować, stosując filtr "Zasób DSC" w obszarze "Kategorie". To repozytorium nie jest zweryfikowane przez firmę Microsoft i zawiera zasoby różnych autorów i wydawców. Moduły programu PowerShell należy zawsze przeglądać pod kątem bezpieczeństwa i wiarygodności przed wykorzystaniem, ponieważ mogą zawierać dowolne skrypty. Zobacz Jak sprawdzić wiarygodność pliku konfiguracji WinGet w celu uzyskania więcej wskazówek dotyczących tworzenia wiarygodnego pliku konfiguracji WinGet.
Windows developer