2013-07-10 8 views
6

में कमांड लाइन प्रोग्राम को कैसे कॉल करें मैं वाईएक्स में ओपनऑफिस के कमांड लाइन प्रोग्राम को कॉल करना चाहता हूं।वाईएक्स

<CustomAction Id="ca_RunOpenOfficeProgram" Return="check" Directory="TARGETDIR" ExeCommand="cmd.exe /K &quot;C:\OpenOffice.org3\program\unopgk.com list --shared&quot;" /> 

कस्टम क्रिया एक निष्पादित स्थापित अनुक्रम में चलाया जा रहा है: ऐसा करने के लिए, मैं नीचे के रूप में देखा, एक कस्टम कार्रवाई बनाते

<InstallExecuteSequence>    
    <Custom Action="ca_RunOpenOfficeProgram" Before="InstallFinalize" /> 
</InstallExecuteSequence> 

जब जिसके परिणामस्वरूप MSI फ़ाइल चल रहा है, मैं प्राप्त एक कमांड लाइन में निम्न त्रुटि संदेश:

Invalid command 'C:\OpenOffice.org3\program\unopkg.com' could not be found. 

ठीक है, जाहिर है, आदेश उपलब्ध है और मैं इसे कमांड लाइन से चला सकते हैं। लेकिन यह काम नहीं करता है अगर कमांड लाइन को वाईएक्स द्वारा बुलाया जा रहा है। यह भी उल्लेखनीय है कि भाग 'सूची - साझा' पूरी तरह अनदेखा कर दिया गया है।

क्या किसी को पता है कि यहां क्या हो रहा है?

उत्तर

0

मिले मेरी समस्या के लिए समाधान:

1) Toms पोस्ट करने के लिए मेरा उत्तर में लिखा है, मैं कमांड लाइन में ... बेवकूफ टाइपो में था।

2) कमांड लाइन कॉल के बारे में उद्धरण खो गया था (Toms जवाब)

3) के साथ 'साझा' पैरामीटर केवल निष्पादित किया जाता है जब कमांड लाइन किया जा रहा रन है मुझे लगता है कि चल रहा है 'unopkg.com' पता चला प्रशासन अधिकारों के साथ।मैंने सोचा कि मेरे कस्टमएक्शन में विशेषता 'प्रतिरूपित = "हाँ" पर्याप्त होगी, लेकिन इससे मदद नहीं मिली। मान लीजिए मुझे यूएसी के संबंध में वाईएक्स के दस्तावेज़ीकरण में गहरी खुदाई करनी है।

राल्फ के लिए भी धन्यवाद। मैंने अपने समाधानों की कोशिश नहीं की, लेकिन आप इसे एक शॉट दे सकते हैं।

5

मैं वाईएक्स टूलसेट से ShellExecute custom action का उपयोग करने की सलाह दूंगा।

<Property Id="WixShellExecTarget" Value="[#myapplication.exe]" /> 
<CustomAction Id="LaunchApplication" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" /> 

बदलें cmd.exe /K &quot;C:\OpenOffice.org3\program\unopgk.com list --shared&quot; को संपत्ति WixShellExecTarget की Value और यह काम करना चाहिए:

यहाँ नमूना कोड है।

3

क्या आप सुनिश्चित हैं कि cmd.exe /K "C:\OpenOffice.org3\program\unopgk.com list --shared" काम करता है? ऐसा लगता है कि आपके पास गलत जगह पर उद्धरण हैं।

और, क्या आप वास्तव में कंसोल विंडो खोलना चाहते हैं (/k)? क्या इंस्टॉलेशन जारी रखने से पहले उपयोगकर्ता को अधिक कमांड दर्ज करना पड़ता है? आप इसके बजाय /c चाहते हैं। cmd /? के साथ सहायता देखें।

लेकिन, अगर केवल एक कमांड की आवश्यकता है, तो प्रोग्राम को सीधे क्यों न चलाएं?

ExeCommand="&quot;C:\OpenOffice.org3\program\unopgk.com&quot; list --shared" 

अंततः, यदि ऊपर केवल आदेश की जरूरत है और यह सोचते हैं C:\OpenOffice.org3\program\unopgk.com एक सांत्वना आवेदन, एक बेकार कंसोल विंडो खोला जाएगा है। इसे वाईएक्स की QtExecCmdLine कस्टम एक्शन से बचा जा सकता है।


आप इस कार्यक्रम चल रहे हैं जानकारी इकट्ठा करने, और यह एक सांत्वना अनुप्रयोग है, तो आप कर सकता है:

cmd /c &quot;C:\OpenOffice.org3\program\unopgk.com&quot; list --shared >path\out.txt 

और एक अन्य कस्टम क्रिया का उपयोग फ़ाइल को पढ़ने और उस पर निर्णय लेने के लिए या इसे विंडोज इंस्टालर संवाद में उपयोगकर्ता को दिखाएं। उपयोगकर्ता को एक कंसोल विंडो के साथ एक ब्लिंकिंग प्रॉम्प्ट के साथ छोड़ने से बेहतर अनुभव होगा जिससे उन्हें बाहर निकलना होगा।

+0

यदि मैं टाइपो करता हूं, तो प्रोग्राम को 'unopkg.com' कहा जाता है। यह सही किया, मेरे CustomAction अब इस तरह दिखता है: '' एमएसआई चलाते समय, मुझे निम्न त्रुटि संदेश प्राप्त होता है: 'इस विंडोज इंस्टालर पैकेज के साथ एपी रॉबलेम है। सेटअप के हिस्से के रूप में चलाया गया एक प्रोग्राम अपेक्षित के रूप में समाप्त नहीं हुआ था। अपने समर्थन से संपर्क करें व्यक्तिगत [...] ' –

+0

लॉग फ़ाइल की जांच करें। कार्यक्रम का वापसी मूल्य (निकास कोड) महत्वपूर्ण हो सकता है। लॉगिंग के साथ msiexec चलाने के लिए [यहां] देखें (http://msdn.microsoft.com/en-us/library/windows/desktop/aa370536 (v = vs.85) .aspx)। –