다음을 통해 공유


CLI를 사용하여 Windows용 패키지된 .NET MAUI 앱 게시

Windows용 .NET 다중 플랫폼 앱 UI(.NET MAUI) 앱을 배포할 때 앱 및 해당 종속성을 다른 시스템에 배포할 폴더에 게시할 수 있습니다. 앱을 MSIX 패키지로 패키지할 수도 있습니다. 이 패키지는 앱을 설치하는 사용자에게 많은 이점이 있습니다. MSIX의 이점에 대한 자세한 내용은 MSIX 란?

서명 인증서 만들기

앱 게시에 사용하기 위해 서명 인증서를 사용해야 합니다. 이 인증서는 MSIX 패키지에 서명하는 데 사용됩니다. 다음 단계에서는 PowerShell을 사용하여 자체 서명된 인증서를 만들고 설치하는 방법을 보여 줍니다.

참고 항목

자체 서명된 인증서를 만들고 사용하는 경우 인증서를 설치하고 신뢰하는 사용자만 앱을 실행할 수 있습니다. 테스트를 위해 구현하기는 쉽지만 추가 사용자가 앱을 설치하지 못할 수 있습니다. 앱을 게시할 준비가 되면 신뢰할 수 있는 원본에서 발급한 인증서를 사용하는 것이 좋습니다. 이 중앙 집중식 신뢰 시스템은 앱 에코시스템에 악의적인 행위자로부터 사용자를 보호하기 위한 확인 수준이 있는지 확인하는 데 도움이 됩니다.

  1. PowerShell 터미널을 열고 프로젝트를 사용하여 디렉터리로 이동합니다.

  2. 명령을 New-SelfSignedCertificate 사용하여 자체 서명된 인증서를 생성합니다.

    사용자가 <PublisherName> 앱을 설치하고, 고유한 값을 제공하고, 문자를 생략할 때 값이 < > 사용자에게 표시됩니다. 매개 변수를 FriendlyName 원하는 텍스트 문자열로 설정할 수 있습니다.

    New-SelfSignedCertificate -Type Custom `
                              -Subject "CN=<PublisherName>" `
                              -KeyUsage DigitalSignature `
                              -FriendlyName "My temp dev cert" `
                              -CertStoreLocation "Cert:\CurrentUser\My" `
                              -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3", "2.5.29.19={text}")
    
  3. 다음 PowerShell 명령을 사용하여 생성된 인증서에 대한 인증서 저장소를 쿼리합니다.

    Get-ChildItem "Cert:\CurrentUser\My" | Format-Table Thumbprint, Subject, FriendlyName
    

    다음 출력과 유사한 결과가 표시됩니다.

    Thumbprint                               Subject                                  FriendlyName
    ----------                               -------                                  ------------
    DE8B962E7BF797CB48CCF66C8BCACE65C6585E2F CN=1f23fa36-2a2f-475e-a69e-3a14fe56ed4
    A6CA34FD0BA6B439787391F51C87B1AD0C9E7FAE CN=someone@microsoft.com
    94D93DBC97D4F7E4364A215F15C6ACFEFC71E569 CN=localhost                             ASP.NET Core HTTPS development certificate
    F14211566DACE867DA0BF9C2F9C47C01E3CF1D9B CN=john
    568027317BE8EE5E6AACDE5079D2DE76EC46EB88 CN=e1f823e2-4674-03d2-aaad-21ab23ad84ae
    DC602EE83C95FEDF280835980E22306067EFCA96 CN=John Smith, OU=MSE, OU=Users, DC=com
    07AD38F3B646F5AAC16F2F2570CAE40F4842BBE0 CN=Contoso                               My temp dev cert
    
  4. 인증서의 지문나중에 사용되므로 클립보드에 복사합니다. 항목이 인증서의 제목 및 FriendlyName일치하는 지문 값입니다.

자세한 내용은 패키지 서명에 대한 인증서 만들기를 참조하세요.

프로젝트 빌드 설정 구성

프로젝트 파일은 Windows 관련 빌드 설정을 배치하는 데 적합합니다. 암호와 같은 일부 설정을 프로젝트 파일에 배치하지 않을 수 있습니다. 이 섹션에 설명된 설정은 명령줄에서 형식으로 -p:name=value 전달할 수 있습니다. 프로젝트 파일에 설정이 이미 정의된 경우 명령줄에 전달된 설정이 프로젝트 설정을 재정의합니다.

프로젝트 파일에 다음 <PropertyGroup> 노드를 추가합니다. 이 속성 그룹은 대상 프레임워크가 Windows이고 구성이 로 Release설정된 경우에만 처리됩니다. 이 구성 섹션은 빌드 또는 게시 모드에서 Release 실행할 때마다 실행됩니다.

<PropertyGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows' and '$(Configuration)' == 'Release'">
    <AppxPackageSigningEnabled>true</AppxPackageSigningEnabled>
    <PackageCertificateThumbprint>A10612AF095FD8F8255F4C6691D88F79EF2B135E</PackageCertificateThumbprint>
</PropertyGroup>
<PropertyGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows' and '$(RuntimeIdentifierOverride)' != ''">
    <RuntimeIdentifier>$(RuntimeIdentifierOverride)</RuntimeIdentifier>
</PropertyGroup>

<PackageCertificateThumbprint> 속성 값을 이전에 생성한 인증서 지문으로 바꿉니다. 또는 프로젝트 파일에서 이 설정을 제거하고 명령줄에 제공할 수 있습니다. 예: -p:PackageCertificateThumbprint=A10612AF095FD8F8255F4C6691D88F79EF2B135E

이 예제의 두 번째 <PropertyGroup> 방법은 Windows SDK의 버그를 해결하는 데 필요합니다. 버그에 대한 자세한 내용은 WindowsAppSDK 문제 #3337을 참조하세요.

게시

앱을 게시하려면 VS 2022 터미널용 개발자 명령 프롬프트를 열고 .NET MAUI 앱 프로젝트의 폴더로 이동합니다. dotnet publish 다음 매개 변수를 제공하여 명령을 실행합니다.

매개 변수
-f 대상 프레임워크입니다 net8.0-windows{version}. 이 값은 다음과 같은 net8.0-windows10.0.19041.0Windows TFM입니다. 이 값이 .csproj 파일의 <TargetFrameworks> 노드 값과 동일한지 확인합니다.
-c 빌드 구성입니다 Release.
-p:RuntimeIdentifierOverride=win10-x64
-또는-
-p:RuntimeIdentifierOverride=win10-x86
WindowsAppSDK 문제 #3337자세히 설명된 버그를 방지합니다. 대상 플랫폼에 -x64 따라 매개 변수의 버전 또는 -x86 버전을 선택합니다.

Warning

.NET MAUI 솔루션을 게시하려고 하면 명령이 솔루션의 dotnet publish 각 프로젝트를 개별적으로 게시하려고 시도하므로 솔루션에 다른 프로젝트 형식을 추가한 경우 문제가 발생할 수 있습니다. 따라서 명령의 dotnet publish 범위를 .NET MAUI 앱 프로젝트로 지정해야 합니다.

예시:

dotnet publish -f net8.0-windows10.0.19041.0 -c Release -p:RuntimeIdentifierOverride=win10-x64

참고 항목

.NET 8 dotnet publish 에서 명령은 기본적으로 구성으로 Release 설정됩니다. 따라서 명령줄에서 빌드 구성을 생략할 수 있습니다.

게시는 앱을 빌드하고 패키지하며 서명된 패키지를 bin\Release\net8.0-windows10.0.19041.0\win10-x64\AppPackages\<appname>\ 폴더에 복사합니다. <appname> 은 프로젝트와 버전 모두의 이름을 따서 명명된 폴더입니다. 이 폴더에는 msix 파일이 있으며, 이것이 앱 패키지입니다.

명령에 대한 자세한 내용은 dotnet publishdotnet publish 참조하세요.

앱 설치

앱을 설치하려면 이미 신뢰하는 인증서로 서명해야 합니다. 그렇지 않으면 Windows에서 앱을 설치할 수 없습니다. 설치 단추를 사용하지 않도록 설정하면 다음과 유사한 대화 상자가 표시됩니다.

Installing an untrusted app.

이전 이미지에서 게시자는 "알 수 없음"이었습니다.

앱 패키지의 인증서를 신뢰하려면 다음 단계를 수행합니다.

  1. .msix 파일을 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.

  2. 디지털 서명 탭을 선택합니다.

  3. 인증서를 선택한 다음 세부 정보를 누릅니 .

    Properties pane of an MSIX file with the digital signatures tab selected.

  4. 인증서 보기를 선택합니다.

  5. 인증서 설치...를 선택합니다.

  6. 로컬 컴퓨터를 선택한 다음, 다음을 선택합니다.

    사용자 계정 컨트롤에서 이 앱이 디바이스를 변경할 수 있도록 허용하시겠습니까?라는 메시지가 표시되면 [예]를 선택합니다.

  7. 인증서 가져오기 마법사 창에서 모든 인증서를 다음 저장소에 배치를 선택합니다.

  8. 찾아보기를 선택한 다음 신뢰할 수 있는 사람 저장소를 선택합니다. 확인을 선택하여 대화 상자를 닫습니다.

    Certificate import wizard window is shown while selecting the Trusted People store.

  9. 다음, 마침을 차례로 선택합니다. 가져오기가 성공했음을 나타내는 대화 상자가 표시됩니다.

    Certificate import wizard window with a successful import message.

  10. 이 프로세스의 일부로 열린 모든 창에서 확인을 선택하여 모두 닫습니다.

이제 패키지 파일을 다시 열어 앱을 설치합니다. 게시자가 올바르게 표시된 다음과 유사한 대화 상자가 표시됩니다.

Installing a trusted app.

앱을 설치하려면 설치 단추를 선택합니다.

현재 제한 사항

다음 목록에서는 게시 및 패키징의 현재 제한 사항에 대해 설명합니다.

  • 게시된 앱은 게시 폴더에서 실행 파일로 직접 실행하려고 하면 작동하지 않습니다.
  • 앱을 실행하는 방법은 먼저 패키지된 MSIX 파일을 통해 설치하는 것입니다.