2012-01-05 20 views
12

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

मैं इस प्रक्रिया को एक या दो क्लिक में कम करने की कोशिश कर रहा हूं: - क्लिकऑन .application फ़ाइल पर मेरी वेबसाइट पर एक लिंक पर क्लिक करें। - इसे चलाने के लिए फिर से क्लिक करें।

मैंने एक और क्लिकऑन एप्लिकेशन बनाया है, जिसमें setup.exe शामिल है। यह जांचता है कि क्या पूर्वापेक्षाएँ स्थापित हैं, और यदि वे हैं तो यह स्वचालित रूप से अन्य क्लिकऑन एप्लिकेशन चलाती है। यदि नहीं, तो यह शामिल setup.exe चलाता है और फिर अन्य क्लिकऑन एप्लिकेशन चलाता है।

मेरी समस्या यह है कि जब मैं इस से दूसरे क्लिकऑन एप्लिकेशन को चलाने का प्रयास करता हूं, तो यह बस मेरे वेब ब्राउज़र को खोलता है और इसे चलाने के बिना .plication फ़ाइल डाउनलोड करता है।

मैं अपने सी # कोड अंदर से ClickOnce आवेदन शुरू करने के लिए निम्नलिखित का उपयोग करने की कोशिश कर रहा हूँ:

Process.Start(ApplicationURL); 

मैं सिर्फ यह स्वचालित रूप से ApplicationURL पर आवेदन शुरू करना चाहते हैं। क्या ब्राउजर भागीदारी को छोड़ने का कोई तरीका है जिसे मैं देख रहा हूं?

(मेरा प्रश्न स्टैक ओवरफ़्लो प्रश्न Run a ClickOnce application from a webpage without user action) के समान है।

+0

आपका डिफ़ॉल्ट ब्राउज़र क्या है?क्या आपने कोशिश की है: 'प्रक्रिया। स्टार्ट ("iexplore.exe", applicationURL) '? –

+2

ठीक है मुझे अभी अपने प्रश्न का उत्तर मिला है। समस्या यह थी कि मेरा डिफ़ॉल्ट ब्राउज़र Google क्रोम है, जो क्लिकऑन अनुप्रयोगों को संभालने के बारे में बिल्कुल नहीं जानता है। मैंने अपना कोड बदल दिया: ProcessStartInfo startInfo = new ProcessStartInfo ("Iexplore"); startInfo.Arguments = ApplicationURL; प्रोसेस एजेंट स्टूडियो = प्रोसेस। स्टार्ट (स्टार्टइन्फो); अब यह इंटरनेट एक्सप्लोरर का उपयोग कर एप्लिकेशन लॉन्च करता है, और एप्लिकेशन अब वास्तव में "एक क्लिक" एप्लिकेशन के रूप में काम करता है। – Jschiff

+0

धन्यवाद एम। बाबाकॉक, जैसा कि आपने उत्तर दिया था, इसे स्वतंत्र रूप से खोजा! – Jschiff

उत्तर

16

टिप्पणियों में बताया गया है कि आप डिफ़ॉल्ट ब्राउज़र पर किसी भी निर्भरता के बिना एक क्लिकऑन एप्लिकेशन लॉन्च करने के लिए iexplore.exe प्रक्रिया शुरू कर सकते हैं। आप dfshim.dll का उपयोग करके, विंडोज एक्सप्लोरर को लॉन्च करने के साथ ही क्लिकऑन एप्लिकेशन को लॉन्च भी कर सकते हैं।

Process.Start("rundll32.exe", "dfshim.dll,ShOpenVerbApplication " + ApplicationURL); 

कुछ अन्य लेख ऑनलाइन है कि इस रणनीति का उपयोग पर चर्चा कर रहे हैं, लेकिन मैं dfshim.dll के किसी भी अधिकारी documenation ShOpenVerbApplication नहीं मिला,।

  • Another Stack Overflow question .नेट फ्रेमवर्क स्थापित करने के लिए .exe और उसके बाद का शुभारंभ ShOpenVerbApplication के माध्यम से एक ClickOnce आवेदन एक कस्टम का उपयोग कर का उल्लेख है।
  • स्कॉट हंसेलमैन discusses ShOpenVerbApplication फ़ायरफ़ॉक्स और क्लिकऑन के बारे में एक पोस्ट में एप्लिकेशन/एक्स-एमएस-एप्लिकेशन एमआईएम प्रकार वाली फ़ाइलों के लिए डिफ़ॉल्ट फ़ाइल मैपिंग के रूप में।

अद्यतन

अन्य स्टैक ओवरफ़्लो सवाल का उल्लेख किया है, आप भी उपयोग कर सकते हैं dfshim.dll के LaunchApplication आदेश है, जो documented on Microsoft's site है। हालांकि, यह आदेश .NET Framework के कुछ पुराने संस्करणों में उपलब्ध नहीं है।

+0

ये काम बहुत बढ़िया है, लेकिन मैं प्रमाणीकरण के माध्यम से कैसे प्राप्त कर सकता हूं? एसएसआरएस साइट को एक की आवश्यकता होती है, और क्रेडेंशियल के बिना एप्लिकेशन डाउनलोड विफल हो जाता है। मैं InPlaceHostingManager के संयोजन के साथ प्रयोग कर रहा हूं (मुझे इसके बारे में पता है, @ डीजीपी को +1 दिया गया है) और एक छिपी हुई एम्बेडेड वेब ब्राउज़र नियंत्रण है, लेकिन यह बदसूरत दिखता है। –

1

InPlaceHostingManager के माध्यम से मैन्युअल रूप से स्थापित करने के लिए Microsoft walkthrough पर एक नज़र डालें। आपके पास प्रोग्रामेटिक रूप से अनुकूलित करने की क्षमता है।

+0

एप्लिकेशन इंस्टॉल करने के लिए शानदार समाधान, लेकिन एप्लिकेशन को "लॉन्च नहीं" कर सकता है। प्रलेखन से: "InPlaceHostingManager एक क्लिकऑन एप्लिकेशन इंस्टॉल कर सकता है, लेकिन इसे निष्पादित नहीं कर सकता है। इस वर्ग में कुछ विधियां, जैसे निष्पादन, एक वेब ब्राउज़र के अंदर चलने वाले विंडोज प्रेजेंटेशन फाउंडेशन-आधारित एप्लिकेशन को डाउनलोड करते समय उपयोग के लिए आरक्षित हैं।" dfshim विधि स्थापित करने और लॉन्च करने की अनुमति देता है। – mikdav

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