2013-02-04 41 views
8

C#のwinforms Clickonceアプリケーションでは、完全な信頼が与えられ、有効な証明書で署名されています。Windows 8のTrustNotGrantedExceptionでClickonce完全信頼アプリケーションの更新が失敗しました

アプリケーションは正常に動作し、Windows XP、Windows 7で正しく更新されます。ただし、Windows 8マシンでは、更新が失敗します。しかし、アプリケーションは正しく動作します。ただし、それ以降のバージョンに移動する最初の更新要求は、次のエラーで失敗します。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ノートパソコンを試してみましたが、同じエラーでアップグレードに失敗しました。完全な信頼のアプリケーションで何が問題になる可能性があるのだろうか? -Manish。 – 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から2つの原因があります。しかし、アプリケーションがアクセス許可の昇格を使用して、ユーザーが上昇信頼の要求を拒否し

  • ...新しいClickOnceの更新は、以前のバージョンよりも多くの権限を使用する展開されているときTrustNotGrantedExceptionは通常発生しそうです。または
  • アプリケーションは信頼できるアプリケーションの展開を使用し、アプリケーションに署名するために使用されたデジタル証明書は、ローカルコンピューター上の信頼できる発行元として表示されません。 アプリケーションの更新を展開していて、その更新プログラムが以前のバージョンより多くのアクセス許可を使用し、ClickOnceがTrustNotGrantedExceptionをスローした場合、新しいバージョンはをインストールしません。

したがって、ユーザーが最後にそれをインストールしてからアプリのセキュリティレベルが変更されたため、それは、それが更新に失敗することを意味します - ので、彼らはそれを再インストールする必要があります。

関連する問題