ClickOnce에서 애플리케이션 업데이트가 수행되는 방식

ClickOnce는 애플리케이션 배포 매니페스트에 지정된 파일 버전 정보를 사용하여 애플리케이션 파일 업데이트 여부를 결정합니다. 업데이트가 시작되면 ClickOnce는 ‘파일 패치’라는 기술을 사용하여 애플리케이션 파일 다운로드가 중복되는 것을 방지합니다.

파일 패치

ClickOnce는 애플리케이션을 업데이트하는 경우 변경되지 않은 파일이 있으면 새 애플리케이션 버전의 일부 파일은 다운로드하지 않습니다. 대신 현재 애플리케이션에 대한 애플리케이션 매니페스트에 지정된 파일의 해시 시그니처를 새 버전에 대한 매니페스트에 있는 시그니처와 비교합니다. 파일의 시그니처가 다르면 ClickOnce는 새 버전을 다운로드합니다. 시그니처가 일치하면 파일이 한 버전에서 다음 버전으로 변경되지 않습니다. 이 경우 ClickOnce는 기존 파일을 복사하여 새 버전의 애플리케이션에서 사용합니다. 이 방법을 사용하면 ClickOnce가 파일 한 개 또는 두 개만 변경된 경우 전체 애플리케이션을 다시 다운로드할 필요가 없습니다.

파일 패치는 요청 시 DownloadFileGroupDownloadFileGroupAsync 메서드를 사용하여 다운로드된 어셈블리에도 적용됩니다.

참고

System.Deployment.Application 네임스페이스의 ApplicationDeployment 클래스 및 API는 .NET Core 및 .NET 5 이상 버전에서 지원되지 않습니다. .NET 7에서 애플리케이션 배포 속성에 액세스하는 새로운 방법을 지원합니다. 자세한 내용은 .NET에서 ClickOnce 배포 속성 액세스를 참조하세요. .NET 7은 ApplicationDeployment 메서드와 동등한 메서드를 지원하지 않습니다.

Visual Studio를 사용하여 애플리케이션을 컴파일하는 경우 전체 프로젝트를 다시 빌드할 때마다 모든 파일에 대해 새 해시 시그니처가 생성됩니다. 이 경우 일부 어셈블리만 변경되었을 수 있지만 모든 어셈블리가 클라이언트로 다운로드됩니다.

데이터로 표시되고 데이터 디렉터리에 저장된 파일에는 파일 패치가 적용되지 않습니다. 파일의 해시 시그니처에 관계없이 항상 다운로드됩니다. 데이터 디렉터리에 대한 자세한 내용은 ClickOnce 애플리케이션의 로컬 및 원격 데이터 액세스를 참조하세요.