Windows 10과 11에는 WinGet(Windows Package Manager)이라는 새로운 네이티브 패키지 관리자가 기본 탑재되었습니다. 명령 프롬프트나 PowerShell에서 리눅스의 yum, dnf, apt처럼 명령어 한 줄로 앱을 설치할 수 있어 개발자와 시스템 관리자에게 큰 편의를 제공합니다.
WinGet.exe는 Windows 환경에서 앱 설치를 손쉽게 처리해주는 콘솔 도구입니다(Chocolatey 패키지 관리자와 유사). 더 이상 공식 사이트를 일일이 찾아다니며 설치 파일을 내려받고 수동으로 설치할 필요가 없습니다. Windows Package Manager를 사용하면 저장소에 등록된 프로그램을 단 한 줄의 명령으로 설치하거나 업데이트할 수 있습니다.
Windows 10에서 WinGet 설치하는 방법
WinGet은 Windows 10 빌드 1709 이상에서 설치할 수 있으며, 최신 Windows 11 21H2와 Windows 10 21H1 이후 빌드에는 기본으로 포함되어 있습니다.
winget이 설치되어 있는지 확인하려면 PowerShell 콘솔을 열고 다음 명령을 실행합니다.
Get-AppPackage *Microsoft.DesktopAppInstaller*|select Name,PackageFullName
UWP 앱 이름인 Microsoft.DesktopAppInstaller가 표시되면 winget이 이미 설치되어 있는 것입니다.

winget은 데스크톱 버전 Windows(10, 11)에서만 사용할 수 있습니다. Windows Server 2022는 공식 지원 대상이 아니지만, 실험적인 방식으로 설치하는 것은 가능합니다.
WinGet은 Microsoft Store에서 App Installer라는 이름으로 배포됩니다. 아래 링크에서 설치할 수 있습니다.
https://www.microsoft.com/en-us/p/app-installer/9nblggh4nns1

Store에서 설치하려면 컴퓨터에서 Microsoft Store가 정상 작동해야 합니다(Microsoft Store가 삭제되었거나 손상된 경우 재설치 또는 복구 후 진행하세요).
기본 UWP 앱을 제거한 환경이라면 PowerShell로 winget을 수동 설치할 수도 있습니다. GitHub 릴리스 페이지(https://github.com/microsoft/winget-cli/releases)에서 msixbundle 파일을 내려받아 설치하면 됩니다.
Invoke-WebRequest -Uri "https://github.com/microsoft/winget-cli/releases/download/v1.1.12653/Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle" -OutFile "C:\PS\WinGet.msixbundle"
Add-AppxPackage "C:\PS\WinGet.msixbundle"

물론 WinGet 패키지 파일을 직접 내려받아 설치하는 것도 가능합니다.

설치된 winget 버전은 다음 명령으로 확인할 수 있습니다.
winget --version

WinGet 기본 명령어 정리
winget install <패키지>— 패키지 설치winget uninstall <패키지>— 패키지 제거winget upgrade— 소프트웨어 패키지 업데이트winget list— Windows에 설치된 앱 목록 조회winget show <패키지>— 패키지 상세 정보 표시winget source <옵션>— 저장소 관리winget search <검색어>— 저장소에서 패키지 검색winget export— 설치된 프로그램 목록을 파일로 내보내기winget import— 파일의 목록에 따라 프로그램 일괄 설치winget hash <패키지>— 패키지 설치 파일의 해시 값 확인winget validate <패키지>— 매니페스트 파일 검증

winget 설정은 settings.json 파일(C:\Users\%username%\AppData\Local\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState)에 저장되며, 다음 명령으로 설정을 변경할 수 있습니다.
winget settings
WinGet으로 소프트웨어 패키지 배포하기
WinGet으로 프로그램을 설치하려면 온라인 저장소를 사용합니다. 현재 연결된 저장소 목록은 다음 명령으로 확인할 수 있습니다.
winget source list
기본적으로 두 개의 공식 저장소가 제공됩니다.
- msstore(https://storeedgefd.dsx.mp.microsoft.com/v9.0) — Microsoft Store 저장소
- winget(https://winget.azureedge.net/cache) — Microsoft가 운영하는 기본 winget 소프트웨어 저장소
WinGet에서는 서드파티 저장소도 연결할 수 있으며, winget source 명령으로 다른 소스를 추가할 수 있습니다.
앱을 설치하기 전에 먼저 패키지 이름을 알아야 합니다. 패키지 검색에는 search 명령을 사용합니다. 예를 들어 저장소에서 zip 압축 프로그램을 검색하려면 다음과 같이 실행합니다.
winget search zip
Microsoft Store 저장소에서만 검색하려면 다음 명령을 사용합니다.
winget search zip -s msstore
명령을 실행하면 검색어와 일치하는 패키지 목록(이름 및 버전 포함)이 반환됩니다. 이때 Source 열을 보면 해당 패키지가 어느 저장소에 있는지 알 수 있습니다.

특정 패키지의 자세한 정보를 확인하려면:
winget show 7zip.7zip

저장소에는 하나의 패키지에 대해 여러 버전이 등록되어 있을 수 있습니다. 사용 가능한 버전 목록을 보려면:
winget show 7zip.7zip --versions
예를 들어 7zip을 설치한다고 가정해 보겠습니다. 패키지 이름이나 ID를 복사한 뒤 다음 설치 명령을 실행합니다.
winget install 7zip.7zip

별도의 옵션이 없으면 사용 가능한 최신 버전이 설치됩니다. 특정 버전을 설치하고 싶다면 다음과 같이 지정할 수 있습니다.
winget install 7zip.7zip -v 21.05
이처럼 패키지 관리자가 단 한 줄의 명령으로 앱을 자동으로 내려받아 설치하며, 설치된 프로그램은 시작 메뉴의 설치된 앱 목록에 바로 나타납니다.

이번에는 PowerShell 스크립트 작업용으로 Windows Terminal과 VSCode를 설치해 보겠습니다.
먼저 패키지 이름을 검색합니다.
winget search terminal
winget search "visual studio"
그런 다음 차례대로 설치합니다.
winget install Microsoft.WindowsTerminal –e ; winget install Microsoft.VisualStudioCode –e
설치 과정을 백그라운드에서 조용히 진행하려면 --silent 옵션을 사용합니다.
winget install "VLC media player" --silent
일부 소프트웨어는 설치 시 사용 약관 동의를 자동화할 수 있습니다. 예를 들어 Sysinternals 도구 모음을 설치할 때는:
winget install sysinternals --accept-package-agreements
기본적으로 프로그램은 시스템 드라이브의 Program Files 폴더에 설치됩니다. 설치 폴더를 변경하고 싶다면:
winget install microsoft.visualstudiocode --location "D:\Programs"
주의할 점은, 관리자 권한 없이 winget을 실행하면 일부 프로그램 설치 시 UAC 권한 상승 창이 나타날 수 있다는 것입니다. 관리자 권한으로 실행된 cmd/PowerShell 콘솔에서는 UAC 확인 없이 모든 프로그램이 설치되므로, 반드시 신뢰할 수 있는 앱만 설치하도록 주의해야 합니다.
Winstall: WinGet 전용 웹 GUI
CLI 인터페이스가 불편한 사용자라면 Winstall 웹 서비스(https://winstall.app/)를 활용해 보세요. Winstall은 WinGet 저장소를 위한 그래픽 인터페이스로, 2,900개 이상의 프로그램을 설치할 수 있습니다.
Winstall을 이용하면 필요한 프로그램들의 설치 스크립트를 손쉽게 생성할 수 있습니다. 저장소에서 원하는 프로그램을 찾고 + 버튼을 클릭해 설치 목록에 추가합니다.

이후 Generate Script 버튼을 누르면 선택한 앱 패키지들을 설치하는 CLI 명령이 자동으로 만들어집니다.
Batch 또는 PowerShell 탭에서 코드를 복사해 cmd.exe나 PowerShell 콘솔에 붙여넣으면 끝입니다.

이렇게 하면 여러 프로그램도 단 한 번의 명령으로 설치할 수 있습니다.
WinGet으로 프로그램 업데이트 및 제거하기
WinGet은 프로그램 설치뿐 아니라 업데이트와 제거도 지원합니다. 컴퓨터에 설치된 프로그램 목록을 보려면 다음 명령을 실행합니다.
winget list
이 명령은 컴퓨터에 설치된 모든 프로그램을 표시합니다(winget으로 설치하지 않은 프로그램 포함). 업데이트가 가능한 프로그램은 Available 열에 새 버전이 표시됩니다.

winget으로 설치한 특정 앱을 업데이트하려면:
winget upgrade --id 7zip.7zip
설치된 모든 프로그램을 한 번에 업데이트할 수도 있습니다.
winget upgrade --all
프로그램을 제거하려면 다음 명령을 사용합니다.
winget uninstall --name 7zip.7zip
WinGet으로 설치하지 않은 앱도 ID를 이용해 제거할 수 있습니다.
winget uninstall --id "{0F693AA3-4387-4ACB-A6FD-3A396290587}"
설치된 프로그램 목록 내보내기 및 가져오기
WinGet을 사용하면 컴퓨터에 설치된 프로그램 목록을 JSON 파일로 내보내고, 이 파일을 다른 컴퓨터에서 불러와 동일한 앱 세트를 빠르게 설치할 수 있습니다.
설치된 앱 목록을 JSON 파일로 내보내려면 다음 명령을 실행합니다.
winget export -o c:\ps\installedapps.json --include-versions
해당 프로그램의 매니페스트가 존재하지 않으면 The installed package is not available in any source 오류가 표시됩니다.
생성된 파일에는 Windows Package Manager를 통해 설치된 프로그램 목록이 담겨 있습니다.

JSON 파일의 프로그램 세트를 다른 컴퓨터에 설치하려면 다음 명령을 실행합니다.
winget import -o .\installed_apps.json
설치 시 버전 정보나 사용 불가능한 프로그램을 무시하도록 하려면 --ignore-unavailable 및 --ignore-versions 옵션을 함께 추가하면 됩니다.