티스토리 뷰
반응형
UWP로 개발된 윈도우 앱은 Packaged App 형태로 배포되었습니다. Packaged App은 MSIX 포멧으로 패키징 되며 Microsoft Store를 통해 간편하게 배포할 수 있습니다. 또한 운영체제에서 지원하는 Notification, Camera, Location, Live Tiles과 같은 기능을 사용할 수 있는 장점이 있습니다.
하지만 사용자의 권한설정에 따라 리소스 사용에 제한을 받습니다. 이러한 제약 덕분에 대부분의 개발자들은 UWP를 사용한 Packaged App 개발을 선호하지 않았으며, 더욱 빠르게 실행되고 리소스 사용에 제한이 없는 WinForm이나 WPF 같은 도구를 사용했습니다.
UWP Packaged App의 실패 덕분인지, WinUI3부터는 Unpackaged App 개발을 지원합니다. Unpackaged App으로 개발할 경우 WPF나 WinForm 처럼 리소스 제약 없이 앱을 개발할 수 있습니다. 하지만 Visual Studio에서 WinUI 3 템플릿으로 프로젝트를 생성하면 기본적으로 Packaged App 프로젝트가 생성되기 때문에, 추가적인 Unpackaged App 설정이 필요합니다.
- 먼저 Visual Studio 2022를 설치하고 최신 업데이트를 내려받으세요.
- Windows App SDK를 설치해주세요. Windows App SDK는 Unpackaged App을 실행하거나 배포하는데 필요한 런타임 패키지입니다.
설치링크: https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/downloads - Visual Studio에서 프로젝트 생성을 클릭 후 "C#", "Windows", "WinUI"를 선택하고 "Blank App, Packaged (WinUI 3 in Desktop) "템플릿을 선택하여 프로젝트를 생성합니다.
- 프로젝트의 .csproj 파일을 열고 <PropertyGroup> 하단에 <WindowsPackageType>None</WindowsPackageType>를 추가합니다.
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>WinExe</OutputType> ... <WindowsPackageType>None</WindowsPackageType> </PropertyGroup> <ItemGroup> ... </Project>
- 앱을 개발 할 때는 Unpakcaged를 선택하여 실행해주세요.
Administrator 권한으로 실행하기
- 먼저 Unpackaged App으로 프로젝트를 설정합니다.
- Package.appxmanifest 파일을 열고 아래와 같이 Capabilities 노드를 설정합니다.
<Package ...> ... <Capabilities> <rescap:Capability Name="runFullTrust" /> <rescap:Capability Name="allowElevation" /> </Capabilities> </Package>
- app.manifest 파일을 열고 다음과 같이 requestedExecutionLevel을 설정합니다.
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1"> ... <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="requireAdministrator" /> </requestedPrivileges> </security> </trustInfo> </assembly>
- 런타임 중에 Aadministrator 권한으로 실행되었는지 체크하려면 아래 코드를 사용하세요.
var currentIdentity = WindowsIdentity.GetCurrent(); var identityPrincipal = new WindowsPrincipal(currentIdentity); bool isInAdministratorRole = identityPrincipal.IsInRole(WindowsBuiltInRole.Administrator); if(isInAdministratorRole == false) MessageBox.Show("관리자 권한으로 실행이 필요합니다.");
References
- Unpackaged: Create a new project for an unpackaged C# : https://learn.microsoft.com/en-us/windows/apps/winui/winui3/create-your-first-winui3-app?source=recommendations#unpackaged-create-a-new-project-for-an-unpackaged-c-or-c-winui-3-desktop-app
- Packaged vs Unpackaged : https://learn.microsoft.com/en-us/windows/apps/get-started/intro-pack-dep-proc#packaged-or-unpackaged
- What is MSIX? : https://learn.microsoft.com/en-us/windows/msix/overview
'Windows App' 카테고리의 다른 글
[WPF] Internet Explorer 실행 (0) | 2024.07.22 |
---|---|
[C#] INotifyPropertyChanged 손쉽게 작성하기 (0) | 2023.05.19 |
[WPF] WebBrower Rendering Version 변경 (0) | 2017.11.14 |
댓글
최근에 올라온 글
최근에 달린 댓글
TAG
- Xamarin.Forms
- ios
- WPF
- material-ui
- .NET Standard
- ASP.NET Core
- MS SQL
- c#
- TypeScript
- Vue
- VisualStudio
- Xamarin.Forms 요약
- StringComparison
- flutter
- React
- npm
- Xamarin
- Android
- Xamarin.iOS
- Xamarin.Forms eBook
- Total
- Today
- Yesterday