2009-07-11 14 views
14

मैं अपने एप्लिकेशन को WiX 3.0 के माध्यम से एक इंस्टॉलर प्राप्त करने का प्रयास कर रहा हूं। सटीक कोड है:वाईएक्स: स्थानीय सेवा के रूप में सेवा स्थापित करना

<File Id="ServiceComponentMain" Name="$(var.myProgramService.TargetFileName)" Source="$(var.myProgramService.TargetPath)" DiskId="1" Vital="yes"/> 

<!-- service will need to be installed under Local Service --> 
<ServiceInstall 
         Id="MyProgramServiceInstaller" 
         Type="ownProcess" 
         Vital="yes" 
         Name="MyProgramAddon" 
         DisplayName="[removed]" 
         Description="[removed]" 
         Start="auto" 
         Account="LocalService" 
         ErrorControl="ignore" 
         Interactive="no"/> 
<ServiceControl Id="StartDDService" Name="MyProgramServiceInstaller" Start="install" Wait="no" /> 
<ServiceControl Id="StopDDService" Name="MyProgramServiceInstaller" Stop="both" Wait="yes" Remove="uninstall" /> 

बात है, किसी कारण LocalService के लिए "स्थापित कर रहा है सेवाओं" कदम पर विफल रहता है, और अगर मैं इसे करने के लिए "स्थानीय सिस्टम" तो संस्थापक का समय समाप्त बदल सेवा शुरू करने की कोशिश करते समय।

सेवा मैन्युअल रूप से और सिस्टम स्टार्टअप पर ठीक से शुरू होती है, और सभी उद्देश्यों और उद्देश्यों के लिए बहुत अच्छा काम करता है। मैंने सुना है कि स्थानीय सेवा के तहत काम करने के लिए सेवाएं मिल रही हैं, लेकिन Google वास्तव में मदद नहीं कर रहा है क्योंकि हर किसी के जवाब "इसे kthx काम करने के लिए मिला है"।

बस इस सेवा को स्थापित करने और स्थापना के दौरान शुरू करने के लिए देख रहे हैं, बस इतना ही। कोई मदद? धन्यवाद!

+0

इंस्टॉल करते समय services.msc विंडो बंद हो गई है क्या आपको कभी इसका जवाब मिल गया है? – Adkins

+0

आप इस सूत्र जांच करना चाह सकते (बहुत पिछले पोस्ट देखें): http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/ServiceInstall-does-nothing-in-WiX-3-5 -td4972774.html ऐसा प्रतीत होता है कि आपको फ़ाइल पर कीपैथ सेट रखना होगा और फ़ाइल को उसी घटक में रखना होगा। – Jaans

उत्तर

10

आप की कोशिश की है ...

NT AUTHORITY\LocalService 

प्रति इस doc ...

... लेकिन खाते का नाम एनटी प्राधिकारी \ LocalService होना चाहिए जब आप CreateService फोन , लोकेल की परवाह किए बिना, या अप्रत्याशित परिणाम हो सकते हैं।

+0

मुझे लगता है कि मैंने कोशिश की, लेकिन "स्थानीय सेवा" के रूप में। बिना कोशिश करेंगे। –

+1

खाता = "एनटी प्राधिकरण \ लोकल सेवा" के साथ, मुझे निम्न मिलता है: "त्रुटि 1 9 23. सेवा 'मेरा कार्यक्रम लंबा नाम' (MyProgramAddon) स्थापित नहीं किया जा सका। सत्यापित करें कि आपके पास सिस्टम सेवाओं को स्थापित करने के लिए पर्याप्त विशेषाधिकार हैं।" बात यह है कि इंस्टॉलर विंडोज एक्सपी के तहत एक व्यवस्थापक के रूप में चल रहा है। मैं –

+0

यह विंडोज 7 – jcmcbeth

7

संदर्भ: ServiceControl Table

ServiceControl टेबल के लिए एमएसआई प्रलेखन कहा गया है कि 'नाम' सेवा की स्ट्रिंग नाम है। आपके कोड स्निपेट में, आपका ServiceControl 'Name' ServiceInstall के लिए 'आईडी' पर सेट है और इसका 'नाम' नहीं है। तो, अपने ServiceControl तत्वों पढ़ना चाहिए:

<ServiceControl Id="StartDDService" Name="MyProgramAddon" Start="install" Wait="no" /> 
<ServiceControl Id="StopDDService" Name="MyProgramAddon" Stop="both" Wait="yes" Remove="uninstall" /> 
3

एक ही समस्या थी लेकिन निर्दिष्ट खातों के साथ, इसके बारे में ऊब और एक सीए बनाया सेवा प्रारंभ करने के बाद स्थापित बजाय पूरा कर लिया गया हो गया। बस एमएसआई के साथ इसे शुरू करने की कोशिश करने से परेशान न हों, बस इसे सीए पर छोड़ दें, जब तक आपको कहीं से कुछ गुणवत्ता की जानकारी न मिल जाए।

स्थानीय सिस्टम का उपयोग कर बीटीडब्ल्यू और मैन्युअल रूप से शुरू की गई सेवा ठीक काम करती है। काम करने के लिए कभी भी कोई अन्य बदलाव नहीं मिला।

+0

क्या एक "सीए" –

+1

@DanCsharpster है:।?।? कस्टम एक्शन, विंडोज इंस्टालर जॉब्स के लिए एड-ऑन का एक प्रकार। Http://msdn.microsoft.com/en-us/library/aa368066%28v=vs.85%29.aspx पहले उन्हें सी ++ में लिखा जाना था, लेकिन अब उन्हें सी # में लिखना संभव होना चाहिए। http://www.advancedinstaller.com/user-guide/qa-c-sharp-ca.html – RenniePet

+0

ओह, गॉचा। धन्यवाद! हाँ, मैंने कुछ कस्टम लिखे हैं VS2010 इंस्टॉलर के लिए क्रियाएं और जब आप चाल सीखते हैं और क्या नहीं करते हैं तो वे बहुत अच्छी तरह से काम करते हैं। क्षमा करें, मैंने अभी नहीं सोचा इसे एक संक्षिप्त नाम में बदलने के लिए। –

1

कृपया ध्यान दें कि ServiceInstall तत्व के लिए प्रलेखन में यह खाता विशेषता के बारे में लिखा गया है कि "खाता जिसके तहत सेवा शुरू करना है। केवल तभी वैध जब सेवा प्रकार स्वयं का है।"। आपके उदाहरण में आपने अपनी प्रोसेस सेवा प्रकार निर्दिष्ट नहीं किया है जो समस्या हो सकती है।

+0

हाय, यह स्वामित्व के तहत चलाया जाता है। मैंने हाथ से कोड को दोबारा हटा दिया और मुझे लगता है कि मैं उस निर्देश को भूल गया। हालांकि धन्यवाद! –

2

मैंने इसमें कुछ समय बिताया और पाया कि ऐसा इसलिए था क्योंकि मेरे पास फ़ाइल पर मौजूद घटक पर कीपैथ विशेषता सेट नहीं थी। मेरे wix फ़ाइल अब लगता है कि:

<Component Id="comp_WF_HOST_18" DiskId="1" KeyPath="no" Guid="3343967A-7DF8-4464-90CA-7126C555A254"> 
    <File Id="file_WF_HOST_18" Checksum="yes" Source="C:\Projects\GouldTechnology\Infrastructure\WorkflowHost\WorkflowHost\bin\Release\WorkflowHost.exe" KeyPath="yes"/> 

     <ServiceInstall 
       Id="workflowHostInstaller" 
       Type="ownProcess" 
       Vital="yes" 
       Name="WorkflowHost" 
       DisplayName="Workflow Host" 
       Start="demand" 
       Account="[WORKFLOW_HOST_USER_ACCOUNT]" 
       Password="[WORKFLOW_HOST_USER_PASSWORD]" 
       ErrorControl="critical" 
       Interactive="no"/> 
    <ServiceControl Id="StartWFService" Name="workflowHostInstaller" Start="install" Stop="both" Remove="both" Wait="no" /> 

</Component> 

अब मैं सिर्फ बाहर काम करने के लिए कैसे यह सही अनुमतियां देने की आवश्यकता ...

+0

धन्यवाद। मेरे निष्पादन योग्य पर मेरे .exe और "no" पर keyPath = "yes" समस्या को हल किया गया है! यह एक बड़ी मदद है! – TamusJRoyce

3

मैं एक ही समस्या थी। यह पता चला है कि मेरे पास <ServiceControl Id="StartService" Name="MyServiceName" में एक टाइपो था जहां मेरा Name सेवा प्रोजेक्ट में निर्दिष्ट सेवा नाम से मेल नहीं खाता था जब मैंने इसे बनाया था।

यह भी मेरी सेवा की स्थापना रद्द नहीं के साथ समस्या थी।

1

हम एक ही समस्या केवल Windows XP मशीन पर उत्पन्न सेवा स्थापित नहीं किया जा सका थे। अंत में हमने पाया कि XP ​​पर वाईएक्स फ़ाइल से नाम सेटिंग को अनदेखा कर दिया गया है और इसके बजाय सी # कोड में सेवा नाम सेट किया गया है। हमारे पास कोड में एक नाम था जिसमें सफेद स्थान था, i। ई। "ब्ला ब्ला सेवा", जब यह विंडोज 7 पर उपयोग की जाने वाली वाईएक्स फ़ाइल के समान नाम पर सेट किया गया था, तो यह अच्छी तरह से काम करता था।

3

मैं सिर्फ aristippus303 की सलाह गूंजता हूं: विंडोज इंस्टालर के साथ सेवा शुरू करने का प्रयास न करें, और कोई खाता सेट न करें, बस स्थापना के दौरान स्थानीय सिस्टम का डिफ़ॉल्ट स्वीकार करें। कुछ और करने की कोशिश करना बहुत ही समस्याग्रस्त है। विंडोज इंस्टालर यह इंगित करने के लिए सेवा के लिए इंतजार कर रहा है कि यह शुरू हो गया है, और ऐसी कई चीजें हैं जो गलत हो सकती हैं, अनुमतियों और अधिकारों और फ़ायरवॉल सेटिंग्स और गायब फाइलों के साथ क्या, इसलिए विंडोज इंस्टालर एक त्रुटि के साथ जमे हुए या समाप्त हो जाता है और आपका इंस्टॉल विफल हो गया है।

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

+0

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

7

यहां एक और मामला है जहां लोकलसिस्टम सेवा त्रुटि 1 9 23 के साथ स्थापित करने में विफल हो सकती है: यदि आपके पास एक ही डिस्प्ले नाम (लेकिन विभिन्न आंतरिक सेवा नाम, पथ इत्यादि) के साथ पहले से स्थापित एक और सेवा है। मैंने बस यह मेरे साथ किया था।

+4

+1 आप! मैं तुमसे प्यार करता हूँ! यह लगभग मेरे साथ हुआ (उसी पथ, अलग प्रदर्शन नाम) लेकिन यह मुझे सही रास्ते पर मिला। धन्यवाद! – TarkaDaal

10

सुनिश्चित करें कि

+0

मुझे एक ही समस्या थी। ऐसा क्यों है ...? –

+3

ओह पीट के लिए ओह। धन्यवाद। – CindyH

+1

ओ एम एफ जी वास्तव में? मुझे एक अवकाश की आवश्यकता है। – juFo