WinGet 구성

WinGet 구성 파일을 사용하여 수동 머신 설정 및 프로젝트 온보딩을 안정적이고 반복 가능한 단일 명령으로 통합할 수 있습니다. 이를 위해 WinGet은 다음을 활용합니다.

  • Windows 머신에서 개발 환경의 원하는 상태를 설정하는 데 필요한 모든 소프트웨어 버전, 패키지, 도구, 종속성 및 설정을 나열하는 YAML 형식의 WinGet 구성 파일입니다.
  • PowerShell DSC(Desired State Configuration)는 Windows 운영 체제의 구성을 자동화합니다.
  • 구성 프로세스를 시작하는 Windows 패키지 관리자 winget configure 명령입니다.

컴퓨터 설정 및 프로젝트 온보딩의 이점

WinGet 구성 파일을 사용할 경우의 이점은 다음과 같습니다.

  • 무인 설치: winget configure 명령을 입력하고 Windows 패키지 관리자와 PowerShell DSC가 설치를 자동화하고 Windows 머신에서 원하는 개발 환경을 구성하는 데 필요한 모든 요구 사항을 설정하도록 합니다.
  • 신뢰할 수 있고 반복 가능: YAML 형식(JSON 스키마 사용)을 사용하여 WinGet 구성 파일에 미리 정의되어 있으므로 새로운 팀이나 프로젝트에 온보딩할 때 올바른 버전의 소프트웨어, 패키지, 도구, 프레임워크를 찾고 개발 환경에 맞는 컴퓨터 설정을 구성할 수 있습니다.
  • 오픈 소스 협업 지원: WinGet 구성 파일은 GitHub 리포지토리에서 호스트될 수 있습니다. 여기서 문제 또는 기여를 제출하거나 안전한 스토리지 위치(예: OneDrive)에서 비공개로 유지하고 프라이빗 이메일이나 기타 보안 채널을 통해 공유할 수 있습니다.

경고

WinGet 구성 파일 및 관련 PowerShell DSC 리소스를 적용하기 전에 신뢰할 수 있는지 확인해야 합니다.

WinGet 구성 파일을 사용하여 컴퓨터 구성

WinGet 구성 파일을 사용하여 컴퓨터를 설정하려면 다음을 수행할 수 있습니다.

  1. 개발자 홈을 설치하고, 컴퓨터 구성으로 이동하고, 구성 파일을 선택하고, 사용하려는 WinGet 구성 파일을 선택합니다. (구성 파일을 만들려면 WinGet 구성 파일을 작성하는 방법을 참조하세요).

  2. 명령줄에서 winget 구성 사용합니다. winget configure 명령을 사용하려면 WinGet 버전 v1.6.2631 이상을 실행해야 합니다.

WinGet 구성 FAQ

WinGet 구성에 관한 질문과 대답 중 일부 답변을 찾아보세요.

WinGet 구성 파일은 어떻게 작동하나요?

WinGet 구성 파일은 YAML로 작성되며 개발 환경을 구성하기 위해 디바이스에 설치된 항목과 컴퓨터 및 설치된 애플리케이션의 구성 상태를 정의합니다.

WinGet 구성 파일은 수행해야 하는 단계의 필수적 시퀀스가 아니라 선언적이므로 원하는 컴퓨터 구성 상태 결과를 정의합니다. Windows 패키지 관리자 및 PowerShell DSC 리소스를 사용하면 선언적 WinGet 구성 파일은 환경에 설정을 설치, 구성 및 적용하여 코드 준비 상태가 될 수 있습니다.

WinGet은 구성 파일을 구문 분석하여 유효한지 확인한 다음, 원하는 상태를 달성하는 데 필요한 모든 관련 PowerShell 모듈(DSC 리소스 포함)을 다운로드합니다. 이러한 리소스를 다운로드하고 WinGet 구성 파일의 신뢰도를 확인한 후 파일의 안전성을 확인하는 데 동의하면 WinGet은 필요한 모든 어설션을 테스트하고 원하는 상태를 적용하기 시작합니다.

WinGet 구성 파일 리소스가 정렬되는 시퀀스는 중요하지 않습니다. 일부 설치 및 구성 프로세스는 병렬로 실행될 수도 있습니다. 어설션은 각 Resource에 정의된 dependsOn 필드와 직접적으로 일치합니다. 리소스에 어설션에 대한 종속성이 포함된 경우 어설션이 먼저 확인됩니다. 어설션이 실패하면 종속 리소스도 실패합니다. 그러나 구성 파일은 계속 실행되어 일부 어설션 또는 리소스 종속성이 실패하더라도 가능한 한 많은 작업을 수행하여 완료하기 전에 컴퓨터는 설정 프로세스에서 최대한 진행할 수 있습니다. 구성이 완료되면 오류를 확인해야 합니다.

예를 들어 WinGet 구성 파일을 실행한 후 다음과 같은 결과가 표시될 수 있습니다.

Assert:: OsVersion
The configuration unit could not be found.
Apply :: DeveloperMode
  This configuration unity was not run because an assert failed or was false.
Apply :: WinGetPackage [vsPackage]
  This configuration unity was not run because an assert failed or was false.

이 예제에서는 운영 체제의 필수 버전에 대한 어설션 검사에 실패했기 때문에 운영 체제 버전에 대한 해당 어설션에 대한 종속성을 포함하는 DeveloperMode 및 WinGetPackage 리소스도 실패했습니다. 그러나 구성 파일에 나열된 다른 설치 및 구성 작업은 계속 진행됩니다.

WinGet 구성 파일의 선언적(비순차적) 특성의 이점은 파일에 추가되는 새 리소스의 위치는 중요하지 않다는 것입니다. 이 기능은 파일의 맨 아래에 추가 리소스를 추가할 수 있으므로 긴 구성 파일에 특히 유용합니다. 어설션 및 종속성을 올바르게 정의한 경우 시퀀스나 첫 번째, 두 번째 등에서 수행되는 설정 단계를 신경 쓰지 않아도 됩니다.

Screenshot of a PowerShell terminal running a WinGet Configuration file with the OSVersion assertion and dependent resources failing.

WinGet 구성 파일을 사용하려면 어떻게 해야 하나요?

WinGet 구성 파일을 실행하려면 winget configure 명령을 사용합니다.

WinGet 구성을 작성하려면 어떻게 해야 하나요?

WinGet 구성 파일을 만들려면 WinGet 구성 파일을 작성하는 방법 문서의 지침을 따릅니다.

WinGet 구성 파일을 신뢰할 수 있는지 확인하려면 어떻게 해야 하나요?

WinGet 구성 파일의 콘텐츠를 검토하고 격리된 환경에서 구성을 테스트하여 실행하기 전에 항상 WinGet 구성 파일의 무결성을 확인하는 것이 좋습니다. WinGet 구성 파일의 신뢰성을 확인하는 방법을 참조하세요.

샘플 WinGet 구성 파일은 어디에서 찾을 수 있나요?

Windows 개발자 홈 리포지토리(https://aka.ms/dsc.yaml)에서 샘플 WinGet 구성 파일을 찾을 수 있습니다.

DSC 리소스를 포함하는 PowerShell 모듈의 예제는 어디에서 찾을 수 있나요?

PowerShell 갤러리는 DSC(Desired State Configuration) 리소스를 포함하는 수백 개의 PowerShell 모듈을 호스트합니다. "범주" 아래에 "DSC 리소스" 필터를 적용하여 검색 결과를 필터링할 수 있습니다.

Desired State Configuration PowerShell module search results from the PowerShell Gallery

내 조직에서 WinGet 구성 파일의 사용을 차단하는 정책을 설정할 수 있나요?

예. 그룹 정책 개체EnableWindowsPackageManagerConfigurationEnableWindowsPackageManagerConfigurationExplanation을 사용하여 조직에서 WinGet 구성 기능을 사용하지 않도록 설정할 수 있습니다.

개발자 홈 및 개발자 드라이브에서 WinGet 구성을 사용하는 방법에 대한 자세한 내용은 어디에서 확인할 수 있나요?

개발자 홈을 사용하여 Windows 개발 환경 설정 문서에서 Windows 11 개발자 홈의 머신 구성 도구를 사용하는 방법에 대해 자세히 알아봅니다. 또한 성능 최적화 개발자 드라이브 스토리지 볼륨을 사용하는 방법을 알아보는 데 관심이 있을 수 있습니다. Windows 11에서 개발자 드라이브 설정을 참조하세요.

WinGet 구성 문제 해결

WinGet 구성이 실패하는 가장 일반적인 이유는 원하는 상태를 적용하기 위해 관리 액세스 권한이 필요한 PowerShell DSC 리소스 때문입니다. 모든 DSC 리소스가 오류에 대한 명시적 이유를 표시하는 것은 아닙니다.

더 일반적인 문제 해결 문제는 곧 추가될 예정입니다. 그동안 GitHub의 WinGet CLI 리포지토리에 제출된 관련 문제를 확인합니다.