ApplicationDeployment.Update 메서드
어셈블리: System.Deployment(system.deployment.dll)
| 예외 형식 | 조건 |
|---|---|
| 로컬 컴퓨터에서 실행하도록 요청한 이 응용 프로그램에 권한 수준을 부여하지 않은 경우 | |
| ClickOnce 배포가 손상된 경우. 이 문제의 진단 및 해결 방법에 대한 설명은 ClickOnce 배포 문제 해결을 참조하십시오. | |
| 새 배포를 네트워크의 지정된 위치에서 다운로드할 수 없는 경우 | |
| 응용 프로그램이 현재 업데이트되고 있는 경우 |
UpdateLocation에 지정된 위치에 응용 프로그램의 새 버전이 게시되고, 응용 프로그램의 배포 매니페스트에 있는 버전 번호가 사용자의 컴퓨터에 현재 설치되어 있는 응용 프로그램의 버전 번호보다 크면 응용 프로그램은 업데이트된 것으로 간주됩니다.
업데이트가 클라이언트 컴퓨터에 다운로드되고 ClickOnce 캐시에 설치될 때까지 Update 호출은 차단되며, 이 시간 동안 응용 프로그램은 사용자에게 응답하지 않습니다. 다운로드 중에 응용 프로그램의 응답성을 유지하고 진행률 보고서를 표시하려면 대신 UpdateAsync 메서드를 사용하십시오.
Update에서는 응용 프로그램 매니페스트에 "optional"로 표시되지 않은 모든 파일을 다운로드합니다. DownloadFileGroup 또는 DownloadFileGroupAsync 메서드를 사용하여 요청 시 선택적 파일을 다운로드할 수 있습니다.
Update 메서드를 호출할 때 ClickOnce에서 이미 응용 프로그램을 자동으로 업데이트하고 있을 수 있으며, 이러한 경우가 발생하면 이 메서드 호출은 InvalidOperationException을 throw합니다.
배포에 있는 여러 파일을 업데이트한 후 응용 프로그램 매니페스트를 새로 고치지 않으면 InvalidDeploymentException이 throw됩니다. 대부분의 경우 이 문제는 ClickOnce 응용 프로그램을 다시 배포하면 해결됩니다. 이 예외는 배포 매니페스트나 응용 프로그램 매니페스트의 공개 키 서명이 유효하지 않거나 없는 경우에도 throw됩니다.
일부 업데이트의 경우 로컬 컴퓨터에서 이전 응용 프로그램 버전보다 높은 신뢰 수준을 요청할 수 있습니다. 신뢰할 수 있는 응용 프로그램 배포를 사용하는 응용 프로그램의 경우 CLR(공용 언어 런타임) 트러스트 관리자가 배포 매니페스트를 조사하여 유효한 트러스트 라이센스가 있는지 여부를 확인합니다. 배포 매니페스트에 유효한 트러스트 라이센스가 포함되어 있지 않으면 ClickOnce에서 설치를 중지하고 TrustNotGrantedException을 throw합니다. Update 메서드는 응용 프로그램 실행에 필요한 권한을 부여할지 여부를 묻는 메시지를 표시하지 않습니다.
다음 코드 예제에서는 응용 프로그램 업데이트를 확인합니다. 사용할 수 있는 업데이트가 있으면 동기적으로 설치합니다.
private void InstallUpdateSyncWithInfo() { UpdateCheckInfo info = null; if (ApplicationDeployment.IsNetworkDeployed) { ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment; try { info = ad.CheckForDetailedUpdate(); } catch (DeploymentDownloadException dde) { MessageBox.Show("The new version of the application cannot be downloaded at this time. \n\nPlease check your network connection, or try again later. Error: " + dde.Message); return; } catch (InvalidDeploymentException ide) { MessageBox.Show("Cannot check for a new version of the application. The ClickOnce deployment is corrupt. Please redeploy the application and try again. Error: " + ide.Message); return; } catch (InvalidOperationException ioe) { MessageBox.Show("This application cannot be updated. It is likely not a ClickOnce application. Error: " + ioe.Message); return; } if (info.UpdateAvailable) { Boolean doUpdate = true; if (!info.IsUpdateRequired) { DialogResult dr = MessageBox.Show("An update is available. Would you like to update the application now?", "Update Available", MessageBoxButtons.OKCancel); if (!(DialogResult.OK == dr)) { doUpdate = false; } } else { // Display a message that the app MUST reboot. Display the minimum required version. MessageBox.Show("This application has detected a mandatory update from your current " + "version to version " + info.MinimumRequiredVersion.ToString() + ". The application will now install the update and restart.", "Update Available", MessageBoxButtons.OK, MessageBoxIcon.Information); } if (doUpdate) { try { ad.Update(); MessageBox.Show("The application has been upgraded, and will now restart."); Application.Restart(); } catch (DeploymentDownloadException dde) { MessageBox.Show("Cannot install the latest version of the application. \n\nPlease check your network connection, or try again later. Error: " + dde); return; } } } } }
- PermissionSet 로컬 컴퓨터에 대한 모든 액세스를 허용하는 데 필요한 권한입니다. 연관된 열거형: PermissionState
Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
Microsoft .NET Framework 3.0은 Windows Vista, Microsoft Windows XP SP2 및 Windows Server 2003 SP1에서 지원됩니다.