연습: 수동으로 ClickOnce 애플리케이션 배포

Visual Studio를 사용하여 ClickOnce 애플리케이션을 배포할 수 없거나 신뢰할 수 있는 애플리케이션 배포와 같은 고급 배포 기능을 사용해야 하는 경우 Mage.exe 명령줄 도구를 사용하여 ClickOnce 매니페스트를 만들어야 합니다. 이 연습에서는 명령줄 버전(Mage.exe) 또는 그래픽 버전(MageUI.exe)의 매니페스트 생성 및 편집 도구를 사용하여 ClickOnce 배포를 만드는 방법을 설명합니다.

참고 항목

.NET Core 3.1 및 .NET 5 이상용 ClickOnce에서는 Mage.exe 대신에 dotnet-mage.exe를 사용합니다. 자세한 내용은 .NET용 ClickOnce를 참조하세요.

필수 조건

이 연습에는 배포를 빌드하기 전에 선택해야 하는 몇 가지 필수 구성 요소 및 옵션이 있습니다.

  • Mage.exeMageUI.exe를 설치합니다.

    Mage.exeMageUI.exe는 Windows SDK(소프트웨어 개발 키트)의 일부입니다. Windows SDK 또는 Visual Studio에 포함된 버전의 Windows SDK가 설치되어 있어야 합니다. 자세한 내용은 MSDN에서 Windows SDK를 참조하세요.

  • 배포할 애플리케이션을 제공합니다.

    이 연습에서는 배포할 준비가 된 Windows 애플리케이션이 있다고 가정합니다. 이 애플리케이션을 AppToDeploy라고 하겠습니다.

  • 배포를 배포할 방법을 결정합니다.

    배포 옵션은 웹, 파일 공유 또는 CD입니다. 자세한 내용은 ClickOnce Security and Deployment을 참조하세요.

  • 애플리케이션에 높은 신뢰 수준이 필요한지 여부를 결정합니다.

    애플리케이션에 완전 신뢰(예: 사용자 시스템에 대한 전체 권한)가 필요한 경우 Mage.exe-TrustLevel 옵션을 사용하여 설정할 수 있습니다. 애플리케이션에 대한 사용자 지정 권한 집합을 정의하려는 경우 다른 매니페스트에서 인터넷 또는 인트라넷 권한 섹션을 복사하고, 필요에 맞게 수정하고, 텍스트 편집기 또는 MageUI.exe를 사용하여 애플리케이션 매니페스트에 추가할 수 있습니다. 자세한 내용은 신뢰할 수 있는 애플리케이션 배포 개요를 참조하세요.

  • Authenticode 인증서를 얻습니다.

    Authenticode 인증서를 통해 배포에 서명해야 합니다. Visual Studio 및 MageUI.exe 또는 MakeCert.exePvk2Pfx.exe 도구를 사용하여 테스트 인증서를 생성하거나 CA(인증 기관)에서 인증서를 가져올 수 있습니다. 신뢰할 수 있는 애플리케이션 배포를 사용하도록 선택하는 경우, 모든 클라이언트 컴퓨터에 인증서를 한 번 설치해야 합니다. 자세한 내용은 Trusted Application Deployment Overview을 참조하십시오.

    참고 항목

    인증 기관에서 가져올 수 있는 CNG 인증서를 통해 배포에 서명할 수도 있습니다.

  • 애플리케이션에 UAC 정보가 포함된 매니페스트가 없도록 합니다.

    애플리케이션이 <dependentAssembly> 요소와 같은 UAC(사용자 계정 컨트롤) 정보가 포함된 매니페스트를 포함할지 여부를 결정해야 합니다. 애플리케이션 매니페스트를 검사하려면 Windows Sysinternals Sigcheck 유틸리티를 사용할 수 있습니다.

    애플리케이션이 UAC 세부 정보가 포함된 매니페스트를 포함하는 경우 UAC 정보 없이 다시 빌드해야 합니다. Visual Studio C# 프로젝트의 경우 프로젝트 속성을 열고 애플리케이션 탭을 선택합니다. 매니페스트 드롭다운 목록에서 매니페스트 없이 애플리케이션 만들기를 선택합니다. Visual Studio의 Visual Basic 프로젝트에서는 프로젝트 속성을 열고 애플리케이션 탭을 선택한 다음 UAC 설정 보기를 클릭합니다. 열린 매니페스트 파일에서 단일 <asmv1:assembly> 요소 내의 모든 요소를 제거합니다.

  • 애플리케이션에 클라이언트 컴퓨터의 필수 구성 요소가 필요한지 여부를 결정합니다.

    Visual Studio에서 배포된 ClickOnce 애플리케이션에는 배포에 필수 구성 요소 설치 부트스트래퍼(setup.exe)가 포함될 수 있습니다. 이 연습에서는 ClickOnce 배포에 필요한 두 개의 매니페스트를 만듭니다. GenerateBootstrapper 작업을 사용하여 필수 구성 요소 부트스트래퍼를 만들 수 있습니다.

Mage.exe 명령줄 도구를 사용하여 애플리케이션을 배포하려면

  1. ClickOnce 배포 파일을 저장할 디렉터리를 만듭니다.

  2. 방금 만든 배포 디렉터리에서 버전 하위 디렉터리를 만듭니다. 애플리케이션을 처음 배포하는 경우 버전 하위 디렉터리의 이름을 1.0.0.0.0으로 지정합니다.

    참고 항목

    배포 버전은 애플리케이션의 버전과 다를 수 있습니다.

  3. 실행 파일, 어셈블리, 리소스, 데이터 파일을 포함한 모든 애플리케이션 파일을 버전 하위 디렉터리에 복사합니다. 필요한 경우 추가 파일이 포함되는 추가 하위 디렉터리를 만들 수 있습니다.

  4. Windows SDK 또는 Visual Studio 명령 프롬프트를 열고 버전 하위 디렉터리로 전환합니다.

  5. Mage.exe 호출을 사용하여 애플리케이션 매니페스트를 만듭니다. 다음 문은 Intel x86 프로세서에서 실행하도록 컴파일된 코드에 대한 애플리케이션 매니페스트를 만듭니다.

    mage -New Application -Processor x86 -ToFile AppToDeploy.exe.manifest -name "My App" -Version 1.0.0.0 -FromDirectory .
    

    참고 항목

    현재 디렉터리를 나타내는 -FromDirectory 옵션 뒤에 점(.)을 포함해야 합니다. 점을 포함하지 않는 경우 애플리케이션 파일의 경로를 지정해야 합니다.

  6. Authenticode 인증서를 통해 애플리케이션 매니페스트에 서명합니다. mycert.pfx를 인증서 파일 경로로 교체합니다. passwd를 인증서 파일의 암호로 바꿉니다.

    mage -Sign AppToDeploy.exe.manifest -CertFile mycert.pfx -Password passwd
    

    Visual Studio 및 Windows SDK와 함께 배포되는 .NET Framework 4.6.2 SDK부터 mage.exe는 CNG 및 Authenticode 인증서를 통해 매니페스트에 서명합니다. Authenticode 인증서와 동일한 명령줄 매개 변수를 사용합니다.

  7. 배포 디렉터리의 루트로 전환합니다.

  8. Mage.exe에 대한 호출을 사용하여 배포 매니페스트를 생성합니다. 기본적으로 Mage.exe는 ClickOnce 배포를 설치된 애플리케이션으로 표시하므로 온라인과 오프라인 모두에서 실행할 수 있습니다. 사용자가 온라인일 때만 애플리케이션을 사용할 수 있게 하려면 -Install 옵션을 false 값으로 사용합니다. 기본값을 사용하고 사용자가 웹 사이트 또는 파일 공유에서 애플리케이션을 설치하는 경우 -ProviderUrl 옵션의 값이 웹 서버 또는 공유에서 애플리케이션 매니페스트의 위치를 가리키도록 해야 합니다.

    mage -New Deployment -Processor x86 -Install true -Publisher "My Co." -ProviderUrl "\\myServer\myShare\AppToDeploy.application" -AppManifest 1.0.0.0\AppToDeploy.exe.manifest -ToFile AppToDeploy.application
    
  9. Authenticode 또는 CNG 인증서를 통해 배포 매니페스트에 서명합니다.

    mage -Sign AppToDeploy.application -CertFile mycert.pfx -Password passwd
    
  10. 배포 디렉터리에 있는 모든 파일을 배포 대상 또는 미디어에 복사합니다. 웹 사이트 또는 FTP 사이트의 폴더, 파일 공유 또는 CD-ROM일 수 있습니다.

  11. 사용자에게 애플리케이션을 설치하는 데 필요한 URL, UNC 또는 물리적 미디어를 제공합니다. URL 또는 UNC를 제공하는 경우 사용자에게 배포 매니페스트에 대한 전체 경로를 제공해야 합니다. 예를 들어 AppToDeploy가 AppToDeploy 디렉터리의 http://webserver01/에 배포된 경우 전체 URL 경로는 http://webserver01/AppToDeploy/AppToDeploy.application입니다.

MageUI.exe 그래픽 도구를 사용하여 애플리케이션을 배포하려면

  1. ClickOnce 배포 파일을 저장할 디렉터리를 만듭니다.

  2. 방금 만든 배포 디렉터리에서 버전 하위 디렉터리를 만듭니다. 애플리케이션을 처음 배포하는 경우 버전 하위 디렉터리의 이름을 1.0.0.0.0으로 지정합니다.

    참고 항목

    배포 버전은 애플리케이션의 버전과 다를 수 있습니다.

  3. 실행 파일, 어셈블리, 리소스, 데이터 파일을 포함한 모든 애플리케이션 파일을 버전 하위 디렉터리에 복사합니다. 필요한 경우 추가 파일이 포함되는 추가 하위 디렉터리를 만들 수 있습니다.

  4. MageUI.exe 그래픽 도구를 시작합니다.

    MageUI.exe
    
  5. 메뉴에서 파일, 새로 만들기, 애플리케이션 매니페스트를 선택하여 새 애플리케이션 매니페스트를 만듭니다.

  6. 기본 이름 탭에 이 배포의 이름과 버전 번호를 입력합니다. 또한 애플리케이션이 빌드되는 프로세서(예: x86)를 지정합니다.

  7. 파일 탭을 선택한 다음, 애플리케이션 디렉터리 텍스트 상자 옆에 있는 줄임표( ... ) 단추를 선택합니다. 폴더 찾아보기 대화 상자가 나타납니다.

  8. 애플리케이션 파일이 포함된 버전 하위 디렉터리를 선택하고 확인을선택합니다.

  9. IIS(인터넷 정보 서비스)에서 배포하려는 경우 채울 때 .deploy 확장명이 없는 모든 파일에 .deploy 확장명 추가 확인란을 선택합니다.

  10. 채우기 단추로 이동하여 모든 애플리케이션 파일을 파일 목록에 추가합니다. 애플리케이션에 실행 파일이 두 개 이상 있다면 파일 형식 드롭다운 목록에서 진입점을 선택하여, 이 배포에 대한 주 실행 파일을 시작 애플리케이션으로 표시합니다. (애플리케이션에 실행 파일이 하나만 포함되어 있는 경우 MageUI.exe에서 해당 파일을 대신 표시합니다.)

  11. 필요한 권한 탭을 선택하고 애플리케이션에서 어설션해야 하는 신뢰 수준을 선택합니다. 기본값은 FullTrust이며 대부분의 애플리케이션에 적합합니다.

  12. 메뉴에서 파일, 다른 이름으로 저장을 선택합니다. 애플리케이션 매니페스트에 서명하라는 서명 옵션 대화 상자가 나타납니다.

  13. 파일 시스템에 파일로 저장된 인증서가 있는 경우 인증서 파일로 서명 옵션을 사용하고, 줄임표( ... ) 버튼을 사용하여 파일 시스템에서 인증서를 선택합니다. 그런 다음 인증서 암호를 입력합니다.

    또는

    인증서가 컴퓨터에서 액세스할 수 있는 인증서 저장소에 유지되는 경우 저장된 인증서로 서명 옵션을 선택하고 제공되는 목록에서 인증서를 선택합니다.

  14. 확인을 선택하여 애플리케이션 매니페스트에 서명합니다. 다른 이름으로 저장 대화 상자가 나타납니다.

  15. 다른 이름으로 저장 대화 상자에서 버전 디렉터리를 지정한 다음 저장을 선택합니다.

  16. 메뉴에서 파일, 새로 만들기, 배포 매니페스트를 선택하여 배포 매니페스트를 만듭니다.

  17. 이름 탭에서 이 배포의 이름 및 버전 번호(이 예제에서는 1.0.0.0)를 지정합니다. 또한 애플리케이션이 빌드되는 프로세서(예: x86)를 지정합니다.

  18. 설명 탭을 선택하고 게시자제품의 값을 지정합니다. (제품은 애플리케이션을 오프라인으로 사용하기 위해 클라이언트 컴퓨터에 설치하는 경우 Windows 시작 메뉴에서 애플리케이션에 지정되는 이름입니다.)

  19. 배포 옵션 탭을 선택하고 시작 위치 텍스트 상자에 웹 서버 또는 공유에서의 애플리케이션 매니페스트의 위치를 지정합니다. 예: \\myServer\myShare\AppToDeploy.application

  20. 이전 단계에서 .deploy 확장명을 추가한 경우 여기에서 .deploy 파일 이름 확장명 사용도 선택합니다.

  21. 업데이트 옵션 탭을 선택하고 이 애플리케이션을 업데이트할 빈도를 지정합니다. 애플리케이션에서 UpdateCheckInfo를 사용하여 업데이트 자체를 확인하는 경우 이 애플리케이션의 업데이트 확인 확인란의 선택을 취소합니다.

  22. 애플리케이션 참조 탭을 선택한 다음 매니페스트 선택 단추로 이동합니다. 열기 대화 상자가 나타납니다.

  23. 앞서 만든 애플리케이션 매니페스트를 선택한 다음 열기를 선택합니다.

  24. 메뉴에서 파일, 다른 이름으로 저장을 선택합니다. 배포 매니페스트에 서명하라는 서명 옵션 대화 상자가 나타납니다.

  25. 파일 시스템에 파일로 저장된 인증서가 있는 경우 인증서 파일로 서명 옵션을 사용하고, 줄임표( ... ) 버튼을 사용하여 파일 시스템에서 인증서를 선택합니다. 그런 다음 인증서 암호를 입력합니다.

    또는

    인증서가 컴퓨터에서 액세스할 수 있는 인증서 저장소에 유지되는 경우 저장된 인증서로 서명 옵션을 선택하고 제공되는 목록에서 인증서를 선택합니다.

  26. 확인으로 이동하여 배포 매니페스트에 서명합니다. 다른 이름으로 저장 대화 상자가 나타납니다.

  27. 다른 이름으로 저장 대화 상자에서 한 디렉터리 위인 배포의 루트로 이동한 다음 저장을 선택합니다.

  28. 배포 디렉터리에 있는 모든 파일을 배포 대상 또는 미디어에 복사합니다. 웹 사이트 또는 FTP 사이트의 폴더, 파일 공유 또는 CD-ROM일 수 있습니다.

  29. 사용자에게 애플리케이션을 설치하는 데 필요한 URL, UNC 또는 물리적 미디어를 제공합니다. URL 또는 UNC를 제공하는 경우 사용자에게 배포 매니페스트에 대한 전체 경로를 제공해야 합니다. 예를 들어 AppToDeploy가 AppToDeploy 디렉터리의 http://webserver01/에 배포된 경우 전체 URL 경로는 http://webserver01/AppToDeploy/AppToDeploy.application입니다.

다음 단계

새 버전의 애플리케이션을 배포해야 하는 경우 새 버전의 이름(예: 1.0.0.1)으로 새 디렉터리를 만들고 새 애플리케이션 파일을 새 디렉터리에 복사합니다. 다음으로, 이전 단계에 따라 새 애플리케이션 매니페스트를 만들고 서명한 다음 배포 매니페스트를 업데이트하고 서명해야 합니다. ClickOnce는 가장 높은 버전만 업데이트하기 때문에 Mage.exe-New-Update 호출 모두에서 동일한 상위 버전을 지정해야 합니다(맨 왼쪽에 있는 정수가 가장 중요함). MageUI.exe를 사용한 경우 배포 매니페스트를 열고, 애플리케이션 참조 탭을 선택하고, 매니페스트 선택 단추로 이동한 다음, 업데이트된 애플리케이션 매니페스트를 선택하여 배포 매니페스트를 업데이트할 수 있습니다.