21

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

मैं अत्यधिक नियंत्रित वातावरण में काम कर रहा हूं। जब कोई अद्यतन उपलब्ध होता है तो इसे स्थापित करना होता है (डेटाबेस के साथ पिछड़ा संगतता पुराने संस्करणों के साथ सुनिश्चित नहीं किया जाता है)।

स्किप दबाए जाने पर एक और विकल्प रन विफल होने के लिए है (जो ठीक काम करता है)।

मुझे एप्लिकेशन के पुराने संस्करण को चलाने से रोकने के लिए कुछ तरीका चाहिए।

उत्तर

39

यह आलेख आपके प्रश्न का उत्तर देता है। मैं सिर्फ एक उत्तर पोस्ट करने के बजाय आपको लेख में इंगित कर रहा हूं क्योंकि लेख में सबकुछ जानने योग्य है।

जबरदस्ती ClickOnce अद्यतन

की ClickOnce स्वत: अद्यतन है बड़ा सेलिंग पॉइंट में से एक:

http://www.sayedhashimi.com/CategoryView,category,ClickOnce.aspx

निम्न आलेख से प्रासंगिक अंश है। में से एक अपडेट के संबंध में मुझे प्राप्त होने वाले सामान्य प्रश्न "मैं उपयोगकर्ता पर अपडेट कैसे कर सकता हूं?"

तीन चीज़ें उपयोगकर्ताओं के बारे में अपडेट के लिए मजबूर करने के लिए संबंध में पता करने के लिए कर रहे हैं:

1) यदि आपका आवेदन एक ऑनलाइन अनुप्रयोग है, अपने उपयोगकर्ताओं को हमेशा नवीनतम संस्करण पर चलेगा; ऑनलाइन एप्लिकेशन हर बार डाउनलोड किया जाता है एप्लिकेशन को एक्सेस किया जाता है। इस प्रकार, ऑनलाइन एप्लिकेशन के साथ, आपको डिफ़ॉल्ट रूप से मजबूर-अद्यतन प्राप्त होते हैं।

2) यदि आपका आवेदन स्थापित आवेदन है, तो आप MinimumRequiredVersion विशेषता का उपयोग द्वारा अद्यतन मजबूर कर सकते हैं। यदि आप विजुअल स्टूडियो का उपयोग करके अपना एप्लिकेशन प्रकाशित करते हैं, तो आप इस प्रॉपर्टी को अपडेट संवाद से सेट कर सकते हैं।

3) नोट करने के लिए आखिरी बात यह है कि अगर आपके आवेदन को इंस्टॉल किए गए आवेदन (है और आप MinimumRequiredVersion विशेषता सेट नहीं किया है) ClickOnce के साथ एक उपयोगकर्ता "अपडेट उपलब्ध" संकेत देगा है अगर केवल संवाद उपयोगकर्ता ने प्रारंभ मेनू शॉर्टकट से एप्लिकेशन लॉन्च किया। यही है, यदि एप्लिकेशन एक स्थापित एप्लिकेशन है और उपयोगकर्ता ने URL से एप्लिकेशन लॉन्च किया है, तो क्लिकऑन अपडेट को मजबूर करता है।


मैं भी एक और अच्छा लेख मिला:

ClickOnce: Bringing Ease and Reliability to Smart Client Deployment

+1

ग्रेट उत्तर! बहुत बहुत धन्यवाद। – Vaccano

+0

उत्तर के लिए धन्यवाद, बहुत मददगार! :) बस एक नोट भी है कि sayedhashimi.com लिंक टूटा हुआ है। – deadlydog

+1

मैंने http://geekswithblogs.net/deadlydog/archive/2012/08/15/force-clickonce-applications-to-automatically-update-without- पर विधि 2 का उपयोग करते समय न्यूनतम RequiredVersion विशेषता को स्वचालित रूप से अद्यतन करने के लिए एक प्रक्रिया को दस्तावेज किया है। prompting-user.aspx – deadlydog

2

यह मेरे अनचेक आवेदन अद्यतन लिए जाँच करनी चाहिए द्वारा काम किया, और आवेदन उपयोगकर्ता को संकेत दिए बिना अद्यतन करने शुरू कर दिया दो संस्करणों के बाद।

Enter image description here

+3

यह केवल तभी काम करेगा जब आप क्लिकऑन एपीआई का उपयोग करके कोड में अद्यतन संभालते हैं: http://msdn.microsoft.com/en-us/library/ms404263.aspx –

+1

हाँ मेरा कोड Program.cs में अपडेट प्रबंधित कर रहा है, मैं कोड को पुनः लोड करता हूं अगर असेंबली का एक नया संस्करण है – PUG

0

ग्राहकों पर एक अद्यतन बाध्य करने के लिए आप सेट करना होगा न्यूनतम संस्करण क्षेत्र वर्तमान संस्करण आप की तैनाती कर रहे हैं करने के लिए बराबर होती है, इस अद्यतन whiout "छोड़" विकल्प के लिए बाध्य करेगा।

4

यह मेरे लिए अच्छी तरह से काम किया। परियोजना फ़ाइल में निम्न जोड़ें:

<UpdateRequired>true</UpdateRequired> 
<MinimumRequiredVersion>$(ApplicationVersion)</MinimumRequiredVersion> 

ध्यान दें कि ApplicationVersion परियोजना फ़ाइल में 1.0.0.* की तरह एक मूल्य नहीं हो सकता है और यह स्वत: अपडेट काम करने के लिए का निर्माण समय में वृद्धि की जाती किया जाना चाहिए।

बढ़ाने के लिए TeamCity, का उपयोग कर संस्करण संख्या अपनी परियोजना के लिए करने के लिए विन्यास बिल्ड पेज जाने के लिए और निम्नलिखित सिस्टम संपत्ति सेट:

system.ApplicationVersion = %build.number% 

तुम भी बढ़ाने के लिए MSBuild प्राप्त कर सकते हैं समय के साथ इस तरह के संस्करण:

<UpdateRequired>true</UpdateRequired> 
<BuildNumber>$([System.DateTime]::Now.ToString(yyyyMMdd))</BuildNumber> 
<RevisionNumber>$([System.DateTime]::Now.ToString(mmss))</RevisionNumber> 
<ApplicationVersion>1.0.$(BuildNumber).$(RevisionNumber)</ApplicationVersion> 
<MinimumRequiredVersion>$(ApplicationVersion)</MinimumRequiredVersion> 
1

David's answer के अतिरिक्त, बस अपनी परियोजना में AutoUpdateProjectsMinimumRequiredClickOnceVersion nuget package इंस्टॉल करें। एक बार जब आप अपने प्रोजेक्ट को अद्यतनों की जांच करने के लिए सेट करते हैं और न्यूनतम आवश्यक संस्करण का उपयोग करने के लिए सेट करते हैं, तो यह सुनिश्चित करने में सक्षम होगा कि न्यूनतम आवश्यक संस्करण हमेशा आपके वर्तमान संस्करण से मेल खाता है (यानी उपयोगकर्ता की हमेशा नवीनतम संस्करण में अपडेट करने के लिए मजबूर होना चाहिए)।

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