.NET

2008-09-29 13 views
31

में क्लिकऑन/स्मार्ट-क्लाइंट परिनियोजन के Pitfalls/gotchas मेरे पास कई .NET Windows Forms एप्लिकेशन हैं जिन्हें मैं ClickOnce/स्मार्ट-क्लाइंट परिनियोजन परिदृश्य में कनवर्ट करने की तैयारी कर रहा हूं। मैंने यह महान ट्यूटोरियल नहीं पढ़ा है, लेकिन क्या ऐसे नुकसान या "गॉथचास" हैं जिन्हें मुझे अवगत होना चाहिए?.NET

कई मामूली अनुप्रयोगों का उपयोग बंद और चालू होता है, लेकिन मुख्य आवेदन सी ​​# में होता है, 24/7 चलता है, काफी बड़ा होता है, लेकिन केवल कुछ ही हफ्तों में बदल जाता है। यह स्थानीय रूप से एक लॉग फ़ाइल को भी लिखता है और स्थानीय हार्डवेयर उपकरणों से बात करता है।

+0

'रचनात्मक नहीं' के रूप में बंद - अभी तक इस प्रश्न का उत्तर मेरे लिए बेहद उपयोगी था ...क्लिकऑन परिनियोजन का उपयोग न करने का निर्णय लेने में;) –

+0

मैंने क्लिकऑन के बारे में शिकायत करने वाले कई लोगों को पढ़ा है, तब से चीजें बदल गई हैं, इन जवाबों को आपको डरा नहीं है, इसे स्थापित करना आसान है और अच्छे फायदे हैं – meda

उत्तर

12

यहां कुछ ऐसे हैं जिन्हें मैं जानता हूं।

  1. डेस्कटॉप पर कोई आइकन नहीं डाल सकता। अब आप कर सकते हैं।

  2. मैं सभी उपयोगकर्ताओं के लिए स्थापित नहीं कर सकता।

  3. मुझे तैनाती को एक अलग सर्वर पर ले जाने के लिए हुप्स के माध्यम से कूदने की आवश्यकता है। यदि आप आंतरिक रूप से विकास कर रहे हैं तो यह कोई समस्या नहीं है, और उपयोगकर्ता उस सर्वर को देख सकते हैं जिसे आप प्रकाशित कर रहे हैं या यदि आप सार्वजनिक वेब पर तैनात हैं, लेकिन यह बहुत अच्छा नहीं है कि आपको स्वतंत्र रूप से एकाधिक ग्राहक साइटों पर रोल करने की आवश्यकता है।

  4. .NET 3.5 एसपी 1 के बाद से आपको तैनाती के मैनिफेस्ट पर हस्ताक्षर करने की आवश्यकता नहीं है जो नए सर्वरों पर तैनाती को स्थानांतरित करना अधिक आसान बनाता है।

  5. मैं GAC में असेंबली इंस्टॉल नहीं कर सकता। आप नियमित इंस्टॉल पैकेज बनाकर इसे प्राप्त कर सकते हैं जो ClickOnce एप्लिकेशन की पूर्व-आवश्यकताएं हैं।

+0

समय-समय पर समाप्त होने वाली कुंजी को बदल नहीं सकता है (बिना पुनर्स्थापित किए) जब तक कि आप .NET 3.5 SP1 पर न हों। –

+0

दरअसल, आप इसे एक नए सर्वर के साथ प्रकाशित करके इसे एक अलग सर्वर पर ले जा सकते हैं (http://robindotnet.wordpress.com/2010/01/17/how-to-move-a-clickonce-deployment/ देखें)। और आप उन्हें एक सेटअप और तैनाती पैकेज में डालकर और उन्हें एक शर्त के रूप में तैनात करके जीएसी में असेंबली स्थापित कर सकते हैं। – RobinDotNet

+0

@RobinDotNet हमारे निर्माण पर्यावरण से सीधे कई ग्राहक के आंतरिक सर्वर पर प्रकाशित करना बिल्कुल आसान नहीं है। वैसे भी, .net3.5 sp1 ने हस्ताक्षर आवश्यकता को हटाकर मेरी सभी समस्याओं को ठीक किया। –

4

क्लिकऑन के साथ होने वाली समस्याओं में से एक यह तथ्य है कि आप GAC पर स्थापित नहीं कर सकते हैं। यदि आप DLL फ़ाइलों को साझा करने वाले एकाधिक एप्लिकेशन इंस्टॉल करना चाहते हैं तो यह एक समस्या है। प्रत्येक एप्लिकेशन को डीएलएल फाइलों की स्थानीय प्रतिलिपि की आवश्यकता होगी। इसके अलावा, एकाधिक उपयोगकर्ता इंस्टॉल बाहर हैं। the list comparing Window Installer to ClickOnce देखें।

+0

यदि डीएलएल का दृढ़ता से नाम दिया गया है, तो क्लिकऑन उन्हें कैश करता है। इसलिए यदि आपके पास एक ही डीएल का उपयोग करने वाले कई एप्लिकेशन हैं (हमारे पास लॉग 4नेट सहित कई हैं), क्लिकऑन कैश में इसकी एक प्रतिलिपि रखेगा। – RobinDotNet

6

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

मैंने internets के आंतों के भीतर कहीं से rumblings सुना है कि ClickOnce का एक भविष्य संस्करण इस सिरदर्द को हटा देगा।

+1

मुझे आशा है कि आपके द्वारा सुनाई जाने वाली रूबल सही हैं ... यह हमारे लिए एक बड़ी समस्या है! – Aaron

3

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

यह भी कुछ समय हो गया है जब से मैंने इसका इस्तेमाल किया था, लेकिन क्लिकऑन संस्करण/बिल्ड नंबर को समझने और प्रदर्शित करने के लिए एक विशेष तरीका है, जो एप्लिकेशन के संस्करण/बिल्ड नंबर से अलग है। आपको कोशिश/पकड़ करना है और यदि क्लिकऑन संस्करण/बिल्ड नंबर अपवाद फेंकता है तो एप्लिकेशन क्लिकऑन-तैनाती वाले एप्लिकेशन के रूप में नहीं चल रहा है (यानी, यह नियमित रूप से संकलित एप्लिकेशन या विजुअल स्टूडियो से चल रहा है)।

एक आवेदन के लिए जो सरल है (यानी Microsoft Word नहीं है, बल्कि कुछ करने के लिए एक त्वरित और गंदे आवेदन है) और बहुत से नियमित तैनाती की आवश्यकता है, ClickOnce बहुत अच्छा है। लेकिन तुम नहीं बल्कि जल्दी से "की ओह, यह ClickOnce द्वारा नहीं किया जा सकता दीवार मारा, कृपया एमएसआई या कुछ और) चुनें।

+3

तैनाती संस्करण संख्या प्राप्त करने का प्रयास करते समय प्रयास/कैच का उपयोग करने के बजाय, इसे "यदि सिस्टम। डिप्लॉयमेंट.एप्लिकेशन। एप्लिकेशन डिप्लॉयमेंट। आईएसनेटवर्क पर तैनात किया गया है तो ..." बहुत साफ यदि यह नेटवर्क तैनात है, तो आप संस्करण प्राप्त कर सकते हैं। यदि नहीं, तो आप नहीं कर सकते। आसान peasy :) –

3

आप अपने सामान्य .NET अनुप्रयोग की तुलना में कम प्रणाली का लाभ उठा सकेंगे।

ऐसा इसलिए है क्योंकि आप एक कम विश्वास स्तर मिलेगा। कि .NET Framework Developer's Guide: ClickOnce Deployment and Security में के बारे में अधिक।

उस के साथ मेरी सबसे बड़ी समस्या यह है कि यह मशीन कुंजी के साथ अपनी विन्यास फाइल के वर्गों एन्क्रिप्ट करने के लिए संभव नहीं है, क्योंकि तुम नहीं था उस कुंजी तक पहुंच प्राप्त करें (जब आप इसके बारे में सोचते हैं तो उस कुंजी की रक्षा करना समझ में आता है)

+2

हम्म, यकीन नहीं है ... आप एक उच्च विश्वास स्तर का अनुरोध कर सकते हैं, उपयोगकर्ता सिर्फ एक चेतावनी संवाद मिल सकता है। आप कॉन्फ़िगरेशन फ़ाइल के अनुभागों को पहले रन पर कोड में एन्क्रिप्ट कर सकते हैं, लेकिन तैनाती के दौरान नहीं, क्योंकि यह तैनाती मशीन की कुंजी है, क्लाइंट नहीं, जिसे क्लाइंट पढ़ नहीं सकता है। –

+0

सही, लेकिन इसे डिक्रिप्ट करने के लिए आपको हमेशा उच्च विश्वास स्तर होना चाहिए .... –

7

अधिकतर मुद्दों को संबोधित किया गया है लेकिन कई लोगों ने डेस्कटॉप शॉर्टकट बनाने में सक्षम नहीं होने का उल्लेख किया है। वास्तव में, आप can create a desktop shortcut with Visual Studio 2008 SP1

इसके अलावा, यदि आप विजुअल स्टूडियो के नवीनतम संस्करण का उपयोग नहीं कर रहे हैं, तो आप हमेशा write code to create a shortcut to the installed start menu shortcut कर सकते हैं।

+3

हालांकि, दुख की बात है, इसे साफ़ रूप से अनइंस्टॉल नहीं किया जाएगा। –

3

यदि कोई व्यक्ति किसी खोज में इसका संदर्भ देता है, तो हमें अपने आवेदन को 'वितरण' की सुरक्षा की कमी से संबंधित कई ग्राहक मिलते हैं। आवेदन किसी सार्वजनिक प्रमाणीकरण के बिना सार्वजनिक स्थान पर उपलब्ध होना चाहिए - इसके लिए अपडेट की जांच करने में सक्षम होना चाहिए। एकमात्र अपवाद यह है कि यदि आपके पास विंडोज एनटी प्रमाणीकरण है। मुझे लगता है कि Securing ClickOnce Applications बताता है कि मेरा क्या मतलब है।

डेस्कटॉप आइकन कोड के माध्यम से करने के लिए काफी छोटे हैं, और जैसा कि बताया गया है, 3.5 SP1 के साथ, बेक्ड इन - ताकि अब कोई समस्या न हो।

अभी भी xmlSerializer के साथ एक unfixed बग है - यह कुछ मामलों में ठीक से तैनात नहीं किया जाता है। इस फ़ाइल को तैनाती में मैन्युअल रूप से जोड़ने के लिए एक आसान कामकाज है। PITA है, लेकिन यह बहुत आसान है ... जब अपने तैनाती अचानक हालांकि विफल रहता है यह चौंकाने वाला हो सकता है ...

9
  • जब अद्यतन तैनात किया गया है, निर्मित संवाद यह जाहिर होता है जैसे कि पूरा आवेदन किया जा रहा है कर देगा फिर से डाउनलोड किया। वास्तव में, केवल बदले गए डीएलएल डाउनलोड किए जा रहे हैं, और प्रदर्शित प्रगति बार भ्रामक/गलत है। समय निकालने का प्रयास न करें कि सभी विधानसभाओं को केवल यह पता लगाने के लिए क्यों तैनात किया जा रहा है कि वे वास्तव में नहीं हैं। ऐसा नहीं है कि मैंने वह किया या कुछ भी।
  • जब आप जिस मूल प्रमाणपत्र को मूल परिनियोजन मैनिफेस्ट पर हस्ताक्षर करने के लिए उपयोग करते हैं, वह समाप्त हो जाता है और आपको एक नया जारी किया जाता है, तो आप चोट की दुनिया में हैं (ग्राहकों को सभी को अनइंस्टॉल करने और पुनर्स्थापित करने की आवश्यकता होगी)। विवरण are at the horse's mouth
4

आप चुपचाप क्लिकऑन परिनियोजित अनुप्रयोगों को अनइंस्टॉल नहीं कर सकते हैं। साथ ही मुझे लगता है कि स्टार्टअप शॉर्टकट में पैरामीटर जोड़ना असंभव है।

3

मुझे नहीं पता था कि एसपी 1 ने आपको डेस्कटॉप आइकन बनाने की अनुमति दी है। यहाँ कैसे हम इसे कर रहे हैं (अब "मुश्किल तरीके से" के रूप में जाना जाता है) है:

  try 
     { 
      string company = string.Empty; 
      string product = string.Empty; 
      if (Attribute.IsDefined(asm, typeof(AssemblyCompanyAttribute))) 
      { 
       AssemblyCompanyAttribute asCompany = (AssemblyCompanyAttribute)Attribute.GetCustomAttribute(asm, typeof(AssemblyCompanyAttribute)); 
       company = asCompany.Company; 
      } 
      if (Attribute.IsDefined(asm, typeof(AssemblyProductAttribute))) 
      { 
       AssemblyProductAttribute asProduct = (AssemblyProductAttribute)Attribute.GetCustomAttribute(asm, typeof(AssemblyProductAttribute)); 
       product = asProduct.Product; 
      } 
      if (!string.IsNullOrEmpty(company) && !string.IsNullOrEmpty(product)) 
      { 
       string desktopPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), 
        product + ".appref-ms"); 
       string shortcutPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Programs), 
        Path.Combine(company, product + ".appref-ms")); 
       File.Copy(shortcutPath, desktopPath, true); 
      } 
     } 
     catch 
     { 
      // Shortcut could not be created 
     } 
+0

एसपी 1 क्या? .NET 3.5? –

1

आप अगर ग्राहक एक प्रॉक्सी कि प्रमाणीकरण की आवश्यकता के पीछे है स्थापित नहीं कर सकता।

+0

हां आप कर सकते हैं। एक कामकाज है इस धागे के अंत को देखें: http://social.msdn.microsoft.com/Forums/en/winformssetup/thread/3e9cebad-9630-4bbc-a0ca-0d2f20335454 – RobinDotNet

+0

हाय रॉबिन, अगर आप अपनी पोस्ट पर प्रतिक्रिया दे रहे हैं वहां - यह केवल उन्नयन तक ही सीमित है? मेरी टिप्पणी प्रारंभिक स्थापना के बारे में थी, जिसे आपने स्वयं कहा था, फिर इस कामकाज के साथ यूएसबी/सीडी आदि करना है। मैं इस मुद्दे पर काम करते हुए दूसरे दिन उस पोस्ट में ठोकर खाई, और एक समाधान के रूप में अस्थायी रूप से उत्साहित था। लेकिन हमारे जैसे इंटरनेट परिनियोजित ऐप के लिए (http://www.qiqqa.com) यह वास्तव में दुर्भाग्य से मदद नहीं करता है। – Nik

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

  • कोई संबंधित समस्या नहीं^_^