2010-08-05 14 views

उत्तर

21

आप डॉटफुस्केटर प्रोजेक्ट में इनपुट के रूप में तैनाती के रूप में ("foo.application") जोड़कर एक क्लिकऑन एप्लिकेशन को स्वचालित रूप से obfuscate करने के लिए डॉटफुस्केटर के वाणिज्यिक संस्करण का उपयोग कर सकते हैं। डॉटफुस्केटर आपको क्लिकऑन एप्लिकेशन में निहित असेंबली में किसी भी आवश्यक बहिष्करण को जोड़ने की अनुमति देगा और अप्रयुक्त असेंबली युक्त अद्यतन तैनाती और एप्लिकेशन मैनिफ़ेस्ट बनाएगा।

विजुअल स्टूडियो (विजुअल स्टूडियो 2010 समेत) में शामिल डॉटफुस्केटर का मुफ्त संस्करण क्लिकऑन अनुप्रयोगों को स्वचालित रूप से खराब करने की सुविधा नहीं है। एक कामकाजी obfuscated ClickOnce एप्लिकेशन प्राप्त करने के लिए आपको ClickOnce प्रकट करने को फिर से बनाना या अपडेट करना होगा क्योंकि obfuscation असेंबली के हस्ताक्षर बदलता है।

आप mage.exe या mageui.exe (विंडोज़/नेट SDK में शामिल) ClickOnce प्रकट होता है अद्यतन करने के लिए उपयोग कर सकते हैं। यदि आप mage.exe का उपयोग करने जा रहे हैं तो आपको यह पता होना चाहिए कि आप अपने क्लिकऑन विकल्पों में "उपयोग करें। फ़ाइल फ़ाइल एक्सटेंशन" विकल्प का उपयोग नहीं कर सकते क्योंकि यह इसे पहचान नहीं पा रहा है।

मानते हुए अपने ClickOnce आवेदन "फू" नाम और संस्करण 1.0.0.0 प्रक्रिया का पालन करना चाहते हैं पर है है:

  1. डिस्क
  2. भागो Dotfuscator सीई पर एक निर्देशिका करने के लिए अपने ClickOnce आवेदन प्रकाशित करें और उन असेंबली को जोड़ें जिन्हें आप अपनी प्रोजेक्ट
  3. असेंबली को बाधित करें से बिन निर्देशिका से obfuscated करना चाहते हैं। Obfuscated असेंबली डिफ़ॉल्ट रूप से "Dotfuscated" नामक एक उपनिर्देशिका में डाल दिया जाएगा।
  4. sn.exe (केवल यदि आप शुरू में मजबूत उन्हें नाम)
  5. कॉपी ClickOnce में वालों के ऊपर प्रकाशित \ Application Files \ Foo_1_0_0_0 निर्देशिका
  6. अद्यतन आवेदन प्रकट से अधिक समझ से परे विधानसभाओं के साथ अपने समझ से परे विधानसभाओं पुनः साइन और यह इस्तीफा देने:

    mage.exe -दिनांक "आवेदन Files \ Foo_1_0_0_0 \ Foo.exe.manifest" -CertFile "c: \ फू \ foo.pfx" -पासवर्ड पासवर्ड

  7. अद्यतन तैनाती प्रकट और इसे इस्तीफा दें:

    mage.exe -Update Foo.application -AppManifest "एप्लिकेशन फ़ाइलें \ Foo_1_0_0_0 \ Foo.exe.manifest" -CertFile "c: \ Foo \ foo।pfx "-पासवर्ड पासवर्ड

अब आप एक वैध आवेदन और तैनाती प्रकट समझ से परे विधानसभाओं का उपयोग कर सकते है। तुम भी एक ही काम पूरा कर MageUI.exe उपकरण का उपयोग कर सकते हैं (और यह जानता है कि कैसे साथ विधानसभाओं को संभालने के लिए। विस्तार तैनात), लेकिन यह स्वचालित करने के लिए के रूप में आसान नहीं है।

+0

हाय @ जो, क्या आप समझा सकते हैं कि प्रमाणपत्र पीएफएक्स फ़ाइल कहां से आती है? – RHaguiuda

+0

@RHaguiuda यदि आप बाहरी ग्राहकों को सॉफ्टवेयर भेज रहे हैं तो यह आमतौर पर एक प्रमाणपत्र विक्रेता (कॉमोडो, थॉवेट, आदि) से आता है। आंतरिक अनुप्रयोगों के लिए मैंने डोमेन नियंत्रक द्वारा हस्ताक्षरित कर्ट का उपयोग किया है या मेकर्ट.एक्सई –

+0

हाय @ जोक्यूमेरल से स्वयं हस्ताक्षरित कर्ट का उपयोग किया है, यह सब करने के बाद क्लाइंट मशीन पर काम करना बंद कर दिया। यह अद्यतन के लिए जांच रहा है, इसे डाउनलोड कर रहा है और इसे चला रहा है। फिर काम करना बंद कर दिया। मैंने इवेंट व्यूअर की जांच की और 1.0.0 मिला।0 4f29010f ग घ System.NullReferenceException C: \ Users \ Interbiz \ AppData \ Local \ अस्थायी \ WER22D1.tmp.WERInternalMetadata.xml – Bindas

1

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

+0

लेकिन, वीएस -2010 में, यदि आप क्लिकऑन 'प्रकाशित' करते हैं, तो कोई डीएल/एक्सई नहीं है। एप्लिकेशन को प्रकाशित करने से पहले 'डॉटफस्केटर कैसे चलाएं'। – Begtostudy

+1

जोड़ें, 'एप्लिकेशन प्रकाशित करने से पहले डॉटफस्केटर चलाएं', कैसे प्रकाशित करें? – Begtostudy

0

यदि आप वीएस -2010 का उपयोग कर रहे हैं, तो डॉटफुस्केटर जो इसके साथ आता है, फाइलों को खराब कर देगा और फिर आपके लिए प्रकट हो जाएगा। [संपादित करें - यह तब तक सही नहीं है जब तक आप पूर्ण संस्करण खरीद नहीं लेते; यह सिर्फ वीएस -2008 की तरह काम करता है।]

यदि आप वीएस -2008 का उपयोग कर रहे हैं, तो आपको फ़ाइलों को obfuscate, और फिर Mage या MageUI के साथ प्रकट होने पर पुनः हस्ताक्षर करने की आवश्यकता होगी।

+0

लेकिन, वीएस -2010 में, यदि आप क्लिकऑन 'प्रकाशित' करते हैं, तो कोई डीएल/एक्सई नहीं है। एप्लिकेशन को प्रकाशित करने से पहले 'डॉटफस्केटर कैसे चलाएं'। – Begtostudy

+0

उपरोक्त निर्देश देखें। प्रीपेप्टिव लोगों के लिए धन्यवाद जिन्होंने ट्विटर पर जानकारी के लिए उनसे पूछा था। :-) – RobinDotNet

3

मैं एक समाधान जो Kuemerle के लिए इसी तरह की है, लेकिन इससे पहले कि प्रक्रिया को प्रकाशित करें। यह Visual Studio और MSBuild आदेश में प्रकाशित साथ काम करता है लाइन

प्रोजेक्ट फ़ाइल में BeforePublish लक्ष्य जोड़ें।

<ItemGroup> 
    <ClickOnceFiles Include="bin\Release\ClickOnce.*"/> 
</ItemGroup> 
<Target Name="BeforePublish"> 
    <Exec Command="{path to dotfuscator}\dotfuscator.exe Dotfuscator.xml" /> 
    <Exec Command="mage.exe -u bin\Release\ClickOnce.exe.manifest" /> 
    <Exec Command="mage.exe -u bin\Release\ClickOnce.application -AppManifest bin\Release\ClickOnce.exe.manifest" /> 
    <Copy SourceFiles="@(ClickOnceFiles)" DestinationFolder="obj\Release" OverwriteReadOnlyFiles="True" /> 
</Target> 

ClickOnce फ़ाइलों ClickOnce.application, ClickOnce.exe, और ClickOnce.exe.manifest हैं। मेरा dotfuscator.xml प्रोजेक्ट फ़ाइल के साथ एक ही फ़ोल्डर में है। कुंजी अंतिम आदेश है, क्लिकऑन फ़ाइलों को obj फ़ोल्डर में कॉपी करें।

+0

उम्म, उपरोक्त का कौन सा हिस्सा फाइलों की संख्या के आधार पर प्रकट होता है? आखिरकार, मेरे पास obfuscation से पहले एक्स फाइलें हो सकती हैं लेकिन obfuscation के बाद केवल एक फ़ाइल (मैनिफेस्ट और .vsto फ़ाइलों को निश्चित रूप से गिनती नहीं है)। –

1

मैं कि क्या यह दृश्य स्टूडियो के बाद के संस्करणों में ही संभव है पता नहीं है लेकिन मेरे लिए यह पूरी तरह काम करता है:

  1. में निष्पादन का निर्माण रिलीज मोड
  2. प्रारंभ की exe-modificator अपनी पसंद और पर फ़ाइल को संशोधित obj/रिलीज/< फ़ाइल नाम > .exe (सूचना: नहीं bin/ लेकिन obj/)
  3. पुश प्रकाशित करें जो पिछले निर्माण किया गया था अप-टू-डेट
  4. लाभ मान लिया गया दृश्य स्टूडियो की अब बटन: डी
0

गहरे समुद्र अस्पष्टकर्ता ClickOnce के साथ काम करता

0

एज़िरिज .NET रिएक्टर के पास एक उत्कृष्ट क्लिकऑन एकीकरण है।

संबंधित मुद्दे