2013-02-04 33 views
8

पर TrustNotGrantedException के साथ असफल पूर्ण ट्रस्ट ऐप अपडेट पर क्लिक करें हमारे पास सी # में एक Winforms क्लिकऑन एप्लिकेशन है जिसे पूर्ण प्रमाण दिया गया है और एक वैध प्रमाणपत्र का उपयोग करके हस्ताक्षरित किया गया है।विंडोज 8

एप्लिकेशन विंडोज़ XP, विंडोज 7 पर ठीक से चलता है और अपडेट करता है। हालांकि, विंडोज 8 मशीन पर, यह बस अपडेट करने में विफल रहता है। हालांकि आवेदन सही ढंग से चलता है। हालांकि, बाद के संस्करण में जाने के लिए पहला अद्यतन अनुरोध विफल रहता है: System.Deployment.Application.TrustNotGrantedException

ApplicationDeployment::CheckForDetailedUpdate() पर कॉल के बाद कोड विफल हुआ। आश्चर्य है कि ऐसा क्यों हो सकता है क्योंकि विंडोज के पिछले सभी संस्करणों पर सटीक एक ही कोड ठीक चल रहा है। किसी भी तरह की सहायता को आभार समझेंगे। नीचे प्रासंगिक स्टैक ट्रेस है:

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

एक और विंडोज 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 से दो कारण हैं। लेकिन ऐसा लगता है TrustNotGrantedException आमतौर पर उठाया है जब एक नई ClickOnce अद्यतन तैनात किया गया है कि पिछले संस्करण की तुलना में अधिक विशेषाधिकार का उपयोग करता है ...

  • आवेदन अनुमति ऊंचाई का उपयोग करता है और उपयोगकर्ता ऊंचा विश्वास के लिए अनुरोध इनकार करते हैं, या
  • एप्लिकेशन विश्वसनीय अनुप्रयोग परिनियोजन का उपयोग करता है और एप्लिकेशन पर हस्ताक्षर करने के लिए उपयोग किए जाने वाले डिजिटल प्रमाणपत्र को स्थानीय मशीन पर विश्वसनीय प्रकाशक के रूप में सूचीबद्ध नहीं किया जाता है। यदि आपने किसी एप्लिकेशन को अपडेट पर तैनात किया है, और अद्यतन पिछले संस्करण की तुलना में अधिक अनुमतियों का उपयोग करता है, और क्लिकऑन एक ट्रस्ट नॉटग्राउंडएक्सप्शन फेंकता है, तो नया संस्करण इंस्टॉल नहीं करेगा।

तो यह समझ में आता है कि यह, अद्यतन करने के लिए विफल हो जाएगा क्योंकि क्षुधा सुरक्षा स्तर उपयोगकर्ता के बाद से बदल गया है पिछले इसे स्थापित - ताकि वे इसे फिर से स्थापित करने की आवश्यकता होगी।