2009-06-22 17 views
16

मैं क्लिकऑन के साथ तैनात एक परियोजना पर काम कर रहा हूं, और मैं कई मुद्दों से गुजर रहा हूं।क्लिकऑन परिनियोजन मुद्दे

मेरे सॉफ़्टवेयर समाधान में दो घटक हैं: एक डेस्कटॉप क्लाइंट जिसे .NET फ्रेमवर्क 3.5 चलाने की आवश्यकता है, और एक सर्वर (ASP.NET एप्लिकेशन) जो उपलब्ध दस्तावेज़ सूचीबद्ध करता है और डेस्कटॉप क्लाइंट को क्लिकऑन के साथ स्थापित करने का एक तरीका प्रदान करता है।

मेरी पहली समस्या पूर्वापेक्षाएँ हैं: मुझे क्लाइंट स्थापना से पहले 3.5 ढांचे को स्थापित करने का एक तरीका चाहिए। विजुअल स्टूडियो setup.exe बनाता है जो इसका ख्याल रखता है, लेकिन इसे काम करने के लिए, इसे सीधे चलाया जाना चाहिए (.application फ़ाइल से जोड़ने के बजाय), और क्लिकऑनेंस मेनिफेस्ट बनाते समय तैनाती URL को जानना होगा।

तो मेरे पास दो और समस्याएं हैं: setup.exe के साथ स्थापित करने के बाद क्वेरी स्ट्रिंग तर्कों के साथ क्लाइंट एप्लिकेशन को चलाने का कोई तरीका नहीं है, इसलिए सर्वर को "जैसे URL से लिंक करने वाली दस्तावेज़ सूची प्रदर्शित करने के बजाय" ... /client.application?document=doc1 "मेरे पास केवल setup.exe का लिंक हो सकता है।

दूसरी समस्या सबसे खराब है: सर्वर का उद्देश्य अपेक्षाकृत छोटे निजी नेटवर्क में उपयोग किया जाना है, न कि एक वेब सर्वर पर। समस्या यह है: मुझे बिल्डऑन क्लाइंट के बिल्डिंग समय पर तैनाती यूआरएल नहीं पता है, इसलिए setup.exe "वेब साइट से इंस्टॉल करें" विकल्प की जांच होने पर ठीक से नहीं चल सकता है। अभी के लिए, वर्कअराउंड एक ऑफ़लाइन इंस्टॉलर है जिसमें setup.exe, पूर्वापेक्षाएँ और क्लिकऑन परिनियोजन फ़ाइलों को एक बड़ी ज़िप फ़ाइल में शामिल किया गया है।

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

कहने की जरूरत नहीं है, मुझे इस रणनीति पर बहुत गर्व नहीं है, जो सभी क्लिकऑन परिनियोजन लाभ को खंडित करता है।

क्या एक और अधिक सुरुचिपूर्ण तरीके से पूर्व शर्त मुद्दे से छुटकारा पाना संभव है? नेटवर्क में सर्वर को तैनात करते समय क्लिकऑन एप्लिकेशन के इंस्टॉलेशन यूआरएल को संशोधित करने का कोई आसान तरीका है (जैसे कॉन्फ़िगरेशन फ़ाइल या यूआरएल में यूआरएल लिखना)?

+0

पूर्वापेक्षाएँ के बारे में, मुझे डाउनलोड की गई फ़ाइलों को देखने के लिए उपयोग किए गए यूआरएल को बदलना पड़ा ("setup.exe -url = http: //my.application.com") यह पूर्वापेक्षाएँ के साथ पहली बार प्रयास नहीं करता था वेबसर्वर कॉन्फ़िगरेशन के कारण मेरे एप्लिकेशन के समान स्थान से डाउनलोड किया गया: mime प्रकार msp और msu के लिए पंजीकृत नहीं थे, इसलिए setup.exe को पूर्वापेक्षाएँ फ़ाइलें नहीं मिलीं –

+3

स्टैक ओवरव्लो पर एकल प्रश्न पूछने का प्रयास करने का एक छोटा सुझाव है लोगों के माध्यम से पढ़ना और पता करना आसान है। आंशिक उत्तरों को स्वीकार करना भी मुश्किल है जो इसे आपकी सहायता करना चाहते हैं जो इसे अनुचित बनाता है। यदि आपको अधिक संदर्भ प्रदान करने की आवश्यकता है तो आप अपने अन्य प्रश्नों से लिंक कर सकते हैं ताकि आप अपने सामने आने वाले मुद्दों की सरणी पर कुछ पृष्ठभूमि दे सकें। – jpierson

उत्तर

6

मैं भी "मैं निर्माण समय में ClickOnce ग्राहक की तैनाती URL नहीं जानते" समस्या को हल करने की कोशिश कर रहा है।

सबसे अच्छा मैं ऊपर आ सकता है एक उपयोगिता है कि अंत उपयोगकर्ता चलेगा कि deploymentURL सेट हो जाएगा लिखने के लिए है (मैं सिर्फ लेखन यह तो यह अभी भी अटकलें शुरू कर दिया)। यह .NET में संभव प्रतीत होता है, लेकिन आप की जरूरत है:

  • प्रकट में साथ ManifestReader.ReadManifest
  • DeploymentUrl
  • ManifestWriter.WriteManifest

सेट तो पढ़ें आप साइन इन करना होगा सुरक्षा यूटिलिटीज का उपयोग करके फिर से मैनिफेस्ट। साइनफाइल

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

+0

धन्यवाद! मुझे यकीन नहीं था कि मैं अपने आवेदन के साथ mage.exe वितरित कर सकता हूं, लेकिन आपका समाधान सरल और बेहतर है! पीले विस्मयादिबोधक चिह्न के बारे में: जहां तक ​​यह काम करता है, मैं इसके साथ ठीक हूं –

+0

पुनर्वितरण mage की अनुमति नहीं है। यह एमएस पुनर्वितरण की किसी भी सूची में प्रतीत नहीं होता है जो मुझे मिल सकता है। एमएस बहुत सख्त है कि क्या पुनर्वितरण किया जा सकता है और नहीं किया जा सकता है। – GrendleM

+0

मेरे मूल रूप से मेरे स्वयं के जेनरेट किए गए प्रमाण या विश्वसनीय प्रमाण का उपयोग करने का निर्णय लेने के साथ ही एक ही समस्या है। एक और विकल्प जिसे मैंने माना और छोड़ दिया है, ग्राहकों के लिए अपने एएसपी.NET आधारित परिनियोजन सर्वर द्वारा उपयोग किए जाने पर अपना प्रमाण प्रदान करने के लिए है जो इस्तीफा देने और फिर से ब्रांडिंग के लिए जिम्मेदार है और यह सब कुछ है। तो कम से कम हमारे ग्राहकों के पास अभी भी विकल्प हैं लेकिन यह दुर्भाग्यपूर्ण है कि हम "ट्रस्ट के लिए एप्लिकेशन मैनिफेस्ट का उपयोग करें" विकल्प जैसे विकल्पों का उपयोग नहीं कर सकते हैं और अभी भी तैनाती के मैनिफेस्ट में कुछ कस्टम ब्रांडिंग हैं। यदि आपको रीब्रांड करने की आवश्यकता नहीं है तो मैं उस विकल्प का सुझाव दूंगा। – jpierson

5

ताकि हमारे निरंतर निर्माण प्रणाली में ClickOnce अनुप्रयोगों के निर्माण और कई परीक्षण सर्वर के लिए तैनात करने के लिए में, मैं Mage और लेख Walkthrough: Manually Deploying a ClickOnce Application साथ कुछ समय बिताया।

मुझे यकीन नहीं है कि यह आपकी दूसरी समस्या का समाधान करेगा, लेकिन यदि आप एकाधिक सर्वर पर तैनात करते हैं तो कम से कम निर्माण प्रक्रिया से कुछ दर्द हो सकता है। यदि आप mage.exe वितरित कर सकते हैं (सुनिश्चित नहीं है कि माइक्रोसॉफ्ट इसे अनुमति देता है), तो आप इंस्टॉलेशन के दौरान साइट पर अपने मैनिफ़ेस्ट को संशोधित कर सकते हैं।

0

शायद NAnt परिनियोजन यूआरएल के परिवर्तन को स्वचालित करने के लिए लीवरेज किया जा सकता है। मैं अपने क्लिकऑन को स्वचालित करने के लिए इसका उपयोग करता हूं और मैनिफेस्ट के निर्माण संस्करण को बदलता हूं। ClickOnce with NAnt वर्णन करता है कि मैंने यह कैसे किया।

+0

"NANT के साथ क्लिकऑन" लिंक टूटा हुआ है। –

+0

यह नया यूआरएल प्रतीत होता है: http://aaronsprague.com/blog/post/Automate-ClickOnce-with-Nant.aspx – BlackICE

0

यदि उपयोगकर्ता डोमेन पर हैं तो मेरे पास sysadmin push .NET 3 होगा।Group Policies/Windows Update का उपयोग करके 5 या डेस्कटॉप का प्रबंधन करने के लिए जो भी अन्य रणनीति का उपयोग किया जा रहा है।

यह पर्यावरण के मुद्दे की तरह लगता है। यदि संगठन सिस्टम प्रशासक के पास पर्याप्त बड़ा है तो यह उस व्यक्ति की ज़िम्मेदारी होनी चाहिए जो आवेदन के लिए पर्यावरण प्रदान करे।

यदि संगठन में इस भूमिका में कोई व्यक्ति नहीं है तो मुझे विश्वास है कि आप अपने मैन्युअल समाधान पर वापस आ गए हैं। साथ ही, मैन्युअल रूप से इसे 'क्लिकऑन के सभी फायदे' तोड़ने की ज़रूरत नहीं है ... क्लिकऑन के फायदे यह है कि आप क्लाइंट को संशोधित कर सकते हैं, पुन: प्रकाशित कर सकते हैं और क्लाइंट मशीन स्वचालित रूप से अपग्रेड हो जाएंगे ...

मुझे लगता है कि दूसरा विकल्प एक स्क्रिप्ट लिखना है जो .NET 3.5 प्राप्त करता है और इंस्टॉल करता है और फिर एप्लिकेशन इंस्टॉल करता है, मैंने पहले यह नहीं किया है ... मुझे यकीन है कि यह काम करेगा ... असल में, आप स्टार्टअप स्क्रिप्ट को तैनात कर सकते हैं समूह नीतियां जो .NET 3.5 भी प्राप्त करती हैं, यह बहुत आसान होगी।

0

दूसरा सवाल:

आप MSBuild का उपयोग कर सकते एक परियोजना, समाधान, या MSBuild पर लक्ष्य प्रकाशित इसलिए जैसे फाइल:

C:\WINDOWS\Microsoft.NET\Framework\v3.5\msbuild.exe "C:\path\foo.vbproj" /target:Publish /property:"PublishUrl=http://clickonce/is/kinda/cool/" /property:"PublishUrl=http://clickonce/is/kinda/cool/" 

PublishUrl स्थान जहां आवेदन आईडीई में करने के लिए प्रकाशित किया जाएगा है। इसे क्लिकऑन एप्लिकेशन मैनिफेस्ट में डाला गया है यदि न तो InstallUrl और न ही UpdateUrl संपत्ति निर्दिष्ट है।

InstallUrl (नहीं दिखाया गया) स्थान उपयोगकर्ता कहां से आवेदन स्थापित हो जाएगा है। यदि निर्दिष्ट किया गया है, तो IsWebBootstrapper प्रॉपर्टी सक्षम होने पर यह मान setup.exe बूटस्ट्रैपर में जला दिया गया है। यह UpdateUrl निर्दिष्ट नहीं है, तो यह एप्लिकेशन मैनिफेस्ट में भी डाला गया है।

पहला सवाल:

ऊपर जवाब अपनी आवश्यकताओं की देखभाल नहीं करता है, तो यह मेरे लिए है कि आप एक विशिष्ट समस्या का सामना कर रहे है; एक डेस्कटॉप निष्पादन योग्य (आपके मामले में .NET Framework 3.5) को एकाधिक डेस्कटॉप पर कैसे इंस्टॉल किया जाता है।Group Policy (जीपी) स्क्रिप्ट या WMI जैसे कई समाधान हैं।

1

हो सकता है कि एक समाधान होगा:

उपयोग PublishUrl = http: // ClickOnce/है/थोड़े/शांत और क्लाइंट कंप्यूटर पर बदल विंडोज
% windir पर स्थित फ़ाइल को होस्ट% \ system32 \ drivers \ etc \ hosts और सर्वर के निश्चित आईपी पते पर होस्ट क्लिकऑन को इंगित करें।

शायद क्लिकऑन के पास उस सर्वर का पता लगाने का विकल्प होना चाहिए जहां से एप्लिकेशन डाउनलोड किया गया था; अगर कोई जानता है तो कृपया यहां पोस्ट करें;

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