2013-01-10 40 views
8

के साथ प्रमाणीकरण का उपयोग करना ठीक है, मैं कुछ सही नहीं कर रहा हूं, और मुझे कुछ मदद चाहिए। यहां क्या हो रहा है:एक क्लिकऑन WPF अनुप्रयोग

  1. मेरे पास Comodo से "असली" प्रमाणीकरण प्रमाण पत्र है जिसके लिए मैंने भुगतान किया है।
  2. मैं विजुअल स्टूडियो 2012 और .NET 4.5 में लिखे गए एक WPF एप्लिकेशन पर हस्ताक्षर करने और तैनात करने का प्रयास कर रहा हूं।
  3. प्रोजेक्ट के गुणों में, मैंने "क्लिकऑन मैनिफ़ेस्ट पर हस्ताक्षर करें" की जांच की है और मेरा प्रमाणपत्र चुना है।
  4. मैं भी Comodo का टाइमस्टैंप Sever (http://timestamp.comodoca.com/authenticode)
  5. प्रकाशित करें टैब में और किसी और चीज की बटन के तहत उपयोग कर रहा हूँ, मैं जाँच की है "सेटअप प्रोग्राम बनाएं शर्त घटक स्थापित करने के लिए"।

जब मैं निर्माण और प्रकाशित करता हूं, सबकुछ काम करता है! Setup.exe को मेरे कॉमोडो प्रमाणपत्र के साथ हस्ताक्षरित किया गया है, इसलिए यह अच्छा है। साथ ही, .application फ़ाइल को कॉमोडो प्रमाणपत्र के साथ हस्ताक्षरित किया गया है और मेरी कंपनी का नाम प्रकाशक के रूप में दिखाया गया है - यह भी अच्छा है।

यहां समस्या आती है: क्लाइंट को एप्लिकेशन डाउनलोड होने के बाद, विंडोज 8 एक अविश्वसनीय प्रोग्राम (MyProgram.exe) के बारे में एक चेतावनी फेंकता है और प्रकाशक मेरी कंपनी का नाम नहीं है। इसलिए, वास्तविक निष्पादन योग्य को छोड़कर सब कुछ पर हस्ताक्षर हो रहा है।

मैं एक के बाद निर्माण स्क्रिप्ट obj \ रिलीज \ MyProgram.exe पर signtool.exe का उपयोग करता है, लेकिन जब मैं आवेदन स्थापित करने का प्रयास है, मैं यह बताते हुए कि हैश मान डॉन 'एक प्रकट त्रुटि मिलती जोड़ने की कोशिश की है टी मैच दूसरे शब्दों में, मेनिफेस्ट पोस्ट-बिल्ड इवेंट से पहले जेनरेट हो रहा है।

मैं अपने .exe पर हस्ताक्षर कैसे करूं और क्लिकऑनेंस मैनिफेस्ट की अखंडता को कैसे बनाए रखूं? क्या ऐसा करने का कोई आसान तरीका है या क्या मुझे हर फ़ाइल पर mage.exe का उपयोग करना है, हाथ से (मुझे उम्मीद नहीं है)?

उत्तर

10

ठीक है, कोई भी इस पर कूद नहीं गया है, लेकिन शुक्र है, मैंने इसे समझ लिया!

इस सवाल का धन्यवाद: "File has a different computed hash than specified in manifest" error when signing the EXE

मैं प्रोजेक्ट फाइल के XML (परियोजना अनलोड, "myproject.csproj संपादित करें" फिर चुनें) को संपादित करने में सक्षम था और कहा:

<Target Name="SignOutput" AfterTargets="CoreCompile"> 
<PropertyGroup> 
    <TimestampServerUrl>http://timestamp.comodoca.com/authenticode</TimestampServerUrl> 
    <ApplicationDescription>My Project Friendly Name</ApplicationDescription> 
    <SigningCertificateCriteria>/n MyCertName</SigningCertificateCriteria> 
</PropertyGroup> 
<ItemGroup> 
    <SignableFiles Include="$(ProjectDir)obj\$(ConfigurationName)\$(TargetName)$(TargetExt)" /> 
</ItemGroup> 
<GetFrameworkSdkPath> 
    <Output TaskParameter="Path" PropertyName="SdkPath" /> 
</GetFrameworkSdkPath> 
<Exec Command="&quot;$(SdkPath)bin\signtool&quot; sign $(SigningCertificateCriteria) /d &quot;$(ApplicationDescription)&quot; /t &quot;$(TimestampServerUrl)&quot; &quot;%(SignableFiles.Identity)&quot;" /> 

मुझे अपने मामले में एसडीके फ़ोल्डर (सी: \ प्रोग्राम फ़ाइलें (x86) \ माइक्रोसॉफ्ट एसडीके \ विंडोज \ v8.0A \ bin में signtool.exe फ़ाइल को स्थानांतरित करना पड़ा था, लेकिन उसके बाद यह एक आकर्षण की तरह काम करता था!

मुझे उम्मीद है कि यह भविष्य में किसी और की मदद करेगा।

+1

मैं वर्षों से पोस्ट-बिल्ड इवेंट का उपयोग कर रहा हूं। वीएस2012 पर स्विच करने के इस मुद्दे में भाग लें। मैंने इस विधि की कोशिश की - लेकिन मुझे अभी भी मिल रहा है "मेनिफेस्ट में निर्दिष्ट की तुलना में एक अलग गणना की हैश है।" – tofutim

+1

स्क्रैच करें कि ... मैं किसी भी तरह पुराने पोस्टबिल्ड साइनटोल कॉल को हटाना भूल गया! धन्यवाद जेसन। – tofutim

+0

धन्यवाद बहुत जेसन आप इसे नाखून! –