2010-01-05 12 views
6

के भीतर से नहीं चला है I Proces.Start विधि का उपयोग कर C# से MSI फ़ाइल चलाने की कोशिश कर रहा हूं। एमएसआई फ़ाइल ठीक है, क्योंकि मैं इसे सामान्य रूप से चला सकता हूं, लेकिन जब मैं कुछ सी # कोड में एमएसआई फ़ाइल चलाने की कोशिश करता हूं तो मुझे निम्न त्रुटि मिलती है।एमएसआई सी #

"यह स्थापना पैकेज खोला नहीं जा सकता। सत्यापित करें कि पैकेज मौजूद है, और आप इसे उपयोग कर सकते हैं कि, या संपर्क के लिए आवेदन विक्रेता सत्यापित करें कि यह एक वैध खिड़कियों इंस्टॉलर पैकेज है"

नीचे कोड है कि मैं MSI फ़ाइल को चलाने के उपयोग कर रहा हूँ ...

Process p = Process.StartApplication.StartupPath "/Packages/Name.msi"); 

p.WaitForExit(); 

है मैं कैसे कर सकता है इस समस्या को ठीक करें?


ठीक है, मुझे अब मिल गया। मैंने बस MSI फ़ाइल को चलाने के बजाय MSI फ़ाइल के साथ जेनरेट की गई setup.exe फ़ाइल चलाने के लिए इसे बदल दिया है ...

उत्तर

14

msi फ़ाइलें स्वयं नहीं चल सकती हैं। आप उन पर डबल क्लिक करें, तो Windows शुरू कर देंगे

msiexec /i PathToYour.msi

क्या आप ऐसा करने के लिए स्पष्ट रूप से कोशिश?

उदाहरण: (सौजन्य @Webleeuw)

Process p = new Process(); 
p.StartInfo.FileName = "msiexec"; 
p.StartInfo.Arguments = "/i PathToYour.msi"; 
p.Start(); 
+0

मुझे मंद होने के लिए माफ कर दो, लेकिन मैं कैसे कर होता है कि Process.Start साथ? – Cwisking

+0

एक पूर्ण नमूने के लिए Webleeuw का जवाब देखें। –

9

अलावा बेंजामिन के जवाब पर पोस्टर की टिप्पणी पर सवाल उठाने:

Process p = new Process(); 
p.StartInfo.FileName = "msiexec"; 
p.StartInfo.Arguments = "/i PathToYour.msi"; 
p.Start(); 
+2

मेरे लिए काम नहीं करता है। यह कुछ कारणों से निर्देशों के साथ विंडोज इंस्टालर बॉक्स दिखा रहा है। – alice7

6

यह भी जुड़े के साथ सीधे .msi फ़ाइल निष्पादित करने के लिए संभव है आवेदन। यह तब होता है जब आप UseShellExecutetrue करने के लिए सेट:

Process.Start(new ProcessStartInfo() 
    { 
     FileName = @"c:\somepath\mySetup.msi", 
     UseShellExecute = true 
    }); 
+0

यह मेरे लिए काम करता है जबकि/मैं किसी कारण से नहीं ... – Niklas

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