2013-02-04 2 views
8

우리는 C#에서 winforms clickonce 응용 프로그램을 사용합니다.이 응용 프로그램은 완전한 신뢰가 부여되고 유효한 인증서를 사용하여 서명되었습니다.Windows 8에서 TrustNotGrantedException으로 실패한 Clickonce 완전 신뢰 응용 프로그램 업데이트

응용 프로그램이 잘 실행되고 Windows XP, Windows 7에서 올바르게 업데이트됩니다. 그러나 Windows 8 컴퓨터에서는 업데이트가 실패합니다. 그러나 응용 프로그램이 올바르게 실행됩니다. 그러나 다음 버전으로 이동하는 첫 번째 업데이트 요청은 실패합니다. System.Deployment.Application.TrustNotGrantedException

ApplicationDeployment::CheckForDetailedUpdate()에 대한 호출이 실패한 후 코드가 실패했습니다. 이전 버전의 모든 Windows에서 똑같은 코드가 정상적으로 실행되는 이유가 궁금 할 때가 있습니다. 어떤 도움을 주시면 감사하겠습니다. 아래는 관련 스택 추적은 다음과 같습니다

System.Deployment.Application.TrustNotGrantedException: User has refused to grant required permissions to the application. 
    at System.Deployment.Application.ApplicationTrust.RequestTrust(SubscriptionState subState, Boolean isShellVisible, Boolean isUpdate, ActivationContext actCtx, TrustManagerContext tmc) 
    at System.Deployment.Application.DeploymentManager.DetermineTrustCore(Boolean blocking, TrustParams tp) 
    at System.Deployment.Application.DeploymentManager.DetermineTrust(TrustParams trustParams) 
    at System.Deployment.Application.ApplicationDeployment.CheckForDetailedUpdate(Boolean persistUpdateCheckResult) 
    at System.Deployment.Application.ApplicationDeployment.CheckForDetailedUpdate() 
+0

다른 Windows 8 랩톱을 사용해 보았습니다. 업그레이드가 실패하여 같은 오류가 발생했습니다. 완전한 신뢰 응용 프로그램으로 무엇이 잘못 될 수 있는지 궁금합니다. - 말라야. – user2039804

답변

5

내가 손 전에 명시 적으로 신뢰를 설정하지 않고 CheckForDetailedUpdate()를 호출하려고 할 때이 스택 트레이스이었다 보았던 유일한 시간. 아래 코드를 추가하면 업데이트 검사가 작동합니다.

// Setup the trust level 
var deployment = ApplicationDeployment.CurrentDeployment; 
var appId = new ApplicationIdentity(deployment.UpdatedApplicationFullName); 
var unrestrictedPerms = new PermissionSet(PermissionState.Unrestricted); 
var appTrust = new ApplicationTrust(appId) { 
    DefaultGrantSet = new PolicyStatement(unrestrictedPerms), 
    IsApplicationTrustedToRun = true, 
    Persist = true 
}; 
ApplicationSecurityManager.UserApplicationTrusts.Add(appTrust); 

// Check for update 
var info = deployment.CheckForDetailedUpdate(); 
+0

나를 위해 작동하지 않습니다. –

0

MSDN page에는 두 가지 원인이 있습니다. 그러나 새로운 ClickOnce를 업데이트 이전 버전보다 더 많은 권한을 사용하는 배포 된 경우 TrustNotGrantedException는 일반적으로 ... 발생 같다

  • 응용 프로그램은 권한 상승을 사용하고 사용자가 높은 신뢰에 대한 요청을 거부; 또는
  • 응용 프로그램에서 신뢰할 수있는 응용 프로그램 배포를 사용하고 응용 프로그램에 서명하는 데 사용되는 디지털 인증서가 로컬 컴퓨터에서 신뢰할 수있는 게시자로 나열되지 않습니다. 응용 프로그램에 대한 업데이트를 배포하고 업데이트가 이전 버전보다 많은 사용 권한을 사용하고 ClickOnce가 TrustNotGrantedException을 throw하면 새 버전은을 설치하지 않습니다. 그래서 그들은 그것을 다시 설치해야합니다 -

그래서 그것은 응용 프로그램의 보안 수준이 마지막으로 설치 한 사용자 이후 변경된 있기 때문에, 갱신에 실패 것이 의미가 있습니다.

관련 문제