식탁보의 기능을 보강하기 위한 목적으로 만든 작지만 유용한 유틸리티 라이브러리를 하나 공유합니다. WinGetSpy라고 이름을 붙였보았습니다.
이 라이브러리를 사용하면 Windows 10 후반부 및 Windows 11부터 기본 탑재되어있는 WinGet 패키지 매니저가 참조하는 GitHub의 WinGet 피드를 읽어 특정 소프트웨어의 설치 패키지 정보, 버전 정보를 조회할 수 있게 도와줍니다.
이 패키지는 .NET Standard 2.0을 대상으로 만들어졌습니다.
다음은 간단한 몇 가지 사용 예시입니다.
패키지 데이터 캐싱 + 검색
using WinGetSpy;
...
var searchKeyword = "Microsoft.DotNet.SDK.8";
var matchFirstItemOnly = true;
var list = await WinGetCatalogManager.LoadCatalogAsync();
var searchResult = list.SearchWinGetPackage(searchKeyword, matchFirstItemOnly);
...
현재 실행 중인 Windows OS와 가장 잘 맞는 설치 패키지 URL 찾기
using WinGetSpy;
...
var searchKeyword = "Microsoft.DotNet.SDK.8";
var matchFirstItemOnly = true;
var list = await WinGetCatalogManager.LoadCatalogAsync();
var searchResult = list.SearchWinGetPackage(searchKeyword, matchFirstItemOnly).First();
var downloadUri = searchResult.GetBestInstallerUrlFor();
Console.WriteLine(downloadUri);
...
대표성이 있는 패키지 쉽게 찾기
몇 가지 대표적인 소프트웨어 패키지들 (예: 파이썬)은 라이브러리에 확장 메서드로 코드를 추가하여 쉽게 최신 버전의 설치 패키지를 찾을 수 있는 부가 기능을 넣어두었습니다.
using WinGetSpy;
using WinGetSpy.KnownPackages.DevTools.Python;
...
var result = list.GetJetBrainsPyCharmProfessionalEAP();
Console.WriteLine(result.GetBestInstallerUrlFor());
...
이 라이브러리 외에도 최근 식탁보 관련 개발을 진행하면서 여러 소소하고 유용한 NuGet 패키지들을 연속으로 출시하고 있습니다. 기회가 되는대로 하나씩 공유해보겠습니다!