Azure Pipeline 에서 Desktop Application에 대한 Msi Project 빌드하기

WinApi 기반 Windows Desktop Gui Application을 작성하면 여러가지 이유때문에 Windows10 의 App Store로 업로드하여 배포하기가 부담 될 수 있습니다.

이러한 이유때문에 아직도 직전 세대 Installer인 Msi가 필요할때가 있는데요.

이 경우 제공된 Installer Project를 아무런 Build Task 작성 없이 (yaml)
Azure Pipeline로 돌리면 Build에 실패하게 됩니다.

(아무래도… msi 자체가 너무 옛날거라…
현세대 시스템들과의 호환성이 있을거란 기대는 품지도 않았네요…)

실패하는 이유를 자세히 찾아보진 않았지만, 가볍게 살펴본 바로는 Msi Installer Project가 Vs Build에 굉장히 종속적입니다.

그래서 Installer Project (.vdproj)는 Dotnet Cli 혹은 Msbuild 만으로는 Build할 수 없고 Visual Studio에 포함되어있는 DevEnv Cli 도구를 사용해야합니다.

아래는 Azure Pipeline에 DevEnv 를 활용해 Installer Project (.vdproj)을 빌드하는 방법입니다.

  • 여기로 이동해 Azure DevOps 조직내에 확장 도구를 설치합니다.

  • Pieline 스크립트에 DevEnvBuild@2를 추가해 대상 Solution 혹은 Project를 설정하여 Task를 만듭니다.


    (Tip: 두번째 줄의 Project 란은 선택사항이지만, 사용하신다면 Directory상의 Path 형식으로 지정해야합니다. )

유의사항: DevEnv 로 Project를 Build할때 시행되는 Restore (Nuget packages) 는 Private Feed의 지정을 받을 수 없습니다. 저같은 경우 이 Task의 직전 Task로 Nuget Restore를 따로 수행하였습니다.

제 작업은 WPF (.Net 5 )로 수행하였습니다.

좋아요 6