मेरे पास Visual Studio Solution में एक Console Application प्रोजेक्ट है। यह एप्लिकेशन, जिसे यहां सेम्प्लिसिटी MyApplication.exe के लिए बुलाया गया है, WCF सेवा के मेजबान के अलावा और कुछ नहीं है।

मुझे लक्ष्य मशीन पर अपना एप्लिकेशन इंस्टॉल करने के लिए एक इंस्टॉलर की आवश्यकता है, इसलिए मैं Microsoft Visual Studio Installer Projects एक्सटेंशन डाउनलोड करता हूं। मैंने उन सभी फाइलों को एकत्र किया जिन्हें मैं एप्लिकेशन फ़ोल्डर में कॉपी करना चाहता हूं लेकिन मैं चाहता हूं कि इंस्टॉलर मेरी सेवा को विंडोज सेवा के रूप में भी पंजीकृत करे।

इस लक्ष्य के लिए, मैंने InstallUtil.exe को ठीक वैसे ही आयात किया जैसे नीचे दी गई तस्वीर में दिखाया गया है। लक्ष्य वातावरण की वास्तविक संरचना को प्रतिबिंबित करने के लिए मैंने नेस्टेड अतिरिक्त फ़ोल्डर्स (Windows फ़ोल्डर -> Microsoft.NET -> Framework64 -> v4.030319) बनाए।

enter image description here

फिर मैंने Commit नोड के तहत Custom Action इस तरह बनाया:

enter image description here

निम्नलिखित Arguments: के साथ

"[TARGETDIR] MyApplication.exe"

मैंने जेनरेट किए गए सेटअप की कोशिश की और मैंने देखा कि सभी फाइलों की प्रतिलिपि बनाई गई है लेकिन सेवा स्थापित नहीं है (मैं इसे एमएससी सूची में नहीं देखता)।

तो, मेरे प्रश्नों के नीचे:

  • मैं कहाँ और क्या गलत कर रहा हूँ?
  • क्या कोई लॉग है जिसे मैं जांच सकता हूं?
  • मैं किस तरह से सेवा की स्थापना रद्द कर सकता हूं, अगर यह पहले से स्थापित थी?
  • सच कहूं तो, मुझे कुछ अधिक अनुकूलन योग्य होने की उम्मीद थी .. उदाहरण के लिए मेरे आवेदन से संबंधित अतिरिक्त चेकबॉक्स या ऐसा कुछ जिसे उपयोगकर्ता स्थापना समय पर प्रबंधित कर सकता है। यदि मेरे App.config में एक KeyValue [सर्वर = "लोकलहोस्ट"] है, तो क्या इसे इंस्टॉलेशन के समय उपयोगकर्ता के लिए पॉपअप के साथ अनुकूलित करने का कोई तरीका है: 'आपका सर्वर कहां है? उपयोगकर्ता द्वारा?
1
user2896152 3 अप्रैल 2020, 21:46

2 जवाब

सीमाएं: विजुअल स्टूडियो इंस्टालर प्रोजेक्ट्स की कई सीमाएं हैं (लघु संस्करण, क्रिस पेंटर)।

वैकल्पिक टूल: कई अन्य टूल हैं, जिनमें से कुछ निःशुल्क हैं ए>।


वाईएक्स टूलकिट: वाईएक्स टूलकिट मुक्त और खुला स्रोत है। कस्टम चलाने की आवश्यकता के बिना सेवाओं को कैसे स्थापित किया जाए, इसके दो उदाहरण यहां दिए गए हैं क्रियाएं (सेवाओं को स्थापित करने की क्षमता एमएसआई में अंतर्निहित है, कोई आवश्यकता नहीं है InstallUtil.exe - अनावश्यक कस्टम कार्रवाई अभियान को "ना कहें" का उपयोग करने के लिए) :

  • https://github.com/iswix-llc/iswix- ट्यूटोरियल/ट्री/मास्टर/विंडोज़-सेवा

  • लिंक:

    0
    Stein Åsmul 6 अप्रैल 2020, 15:15

    शायद यह समान स्थिति में किसी के लिए उपयोगी होगा।

    विवरण का उपयोग करना

    using System.Configuration.Install;
    

    इंस्टॉल करना

    ManagedInstallerClass.InstallHelper(new[] { Assembly.GetExecutingAssembly().Location });
    

    अनइंस्टॉल करना

    ManagedInstallerClass.InstallHelper(new[] { "/u", Assembly.GetExecutingAssembly().Location });
    

    उपरोक्त आपके द्वारा उल्लिखित InstallUtil के लिए कार्यक्षमता को संभालता है।

    दस्तावेज़ीकरण

    ManagedInstallerClass.InstallHelper

    InstallUtil . पर दस्तावेज़ीकरण

    उपयोगिता निम्नलिखित स्थानों पर स्थित है:

    Windows सिस्टम पर .NET निर्देशिकाएँ:

    • C:\Windows\Microsoft.NET\Framework\v \InstallUtil.exe
    • सी:\Windows\Microsoft.NET\Framework64\v \InstallUtil.exe

    InstallUtil.exe Microsoft द्वारा डिजिटल रूप से हस्ताक्षरित है।

    0
    eyegropram 20 मई 2020, 21:23