कहें, अगर मेरे पास एक एमएसआई इंस्टॉलेशन फ़ाइल है, तो क्या मैं इसे इंस्टॉल किए बिना सी # या सी ++ प्रोग्राम से अपनी सामग्री निकाल सकता हूं?क्या मैं सीएस ++ या सी # प्रोग्राम के भीतर से एमएसआई पैकेज की सामग्री निकाल सकता हूं?
उत्तर
आमतौर पर आप एक एमएसआई की सामग्री निकालने के लिए Administrative installation perforrm कर सकते हैं।
msiexec /a foo.msi TARGETDIR=C:\EXTRACTHERE /qn
आप इस प्रक्रिया के बाहर जाने के लिए आप MsiInstallProduct function के माध्यम से एमएसआई के साथ सीधे Interop कर सकते हैं नहीं करना चाहते हैं।
szPackagePath [में] एक शून्य-समाप्त स्ट्रिंग जो Windows इंस्टालर पैकेज के स्थान के पथ को निर्दिष्ट करता है। स्ट्रिंग मान में एक यूआरएल नेटवर्क पथ, एक फ़ाइल पथ (उदा। फ़ाइल: //packageLocation/package.msi), या एक स्थानीय पथ (उदा। डी: \ पैकेज स्थान \ package.msi) हो सकता है।
szCommandLine [में] एक नल-टर्मिनेटेड स्ट्रिंग जो कमांड लाइन प्रॉपर्टी सेटिंग्स निर्दिष्ट करती है। यह संपत्ति = सेटिंग संपत्ति = सेटिंग प्रारूप की एक सूची होनी चाहिए। अधिक जानकारी के लिए, गुणों के बारे में देखें।
प्रशासनिक स्थापना करने के लिए, szCommandLine में ACTION = ADMIN शामिल करें। अधिक जानकारी के लिए, ACTION गुण देखें।
ध्यान दें कि जब आप स्वयं को पी/घोषित कर सकते हैं, तो वास्तव में अच्छी तरह से अच्छी है .NET इंटरऑप लाइब्रेरी Windows Instaler XML के साथ उपलब्ध है जिसे डिप्लॉयमेंट टूल्स फाउंडेशन (डीटीएफ) कहा जाता है। माइक्रोसॉफ्ट। डिप्लॉयमेंट। विन्डोज़ इंस्टालर नेमस्पेस में इंस्टालर नामक एक क्लास विधि है जो इंस्टॉल प्रोडक्ट नामक एक स्थिर विधि का खुलासा करती है। यह MsiInstallProduct का प्रत्यक्ष encapsulation है।
डीटीएफ पुस्तकालयों का उपयोग करके आप Win32 एपीआई पर कुरूपता से छिपाते हैं और सही ढंग से IDISposable लागू करते हैं जहां यह सुनिश्चित करने के लिए आवश्यक है कि अंतर्निहित अप्रबंधित हैंडल आवश्यक हो।
इसके अतिरिक्त डीटीएफ में माइक्रोसॉफ्ट है। डिप्लॉयमेंटविंडोव्स इंस्टालर। इंस्टालपैकेज क्लास के साथ पैकेज नामस्थान। यह वर्ग ExtractFiles() नामक एक विधि का खुलासा करता है जो फ़ाइलों को कार्यशील निर्देशिका में निकालता है। कोड का एक उदाहरण इस तरह दिखता है:
using Microsoft.Deployment.WindowsInstaller;
using Microsoft.Deployment.WindowsInstaller.Package;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
using(var package = new InstallPackage(@"C:\test.msi", DatabaseOpenMode.ReadOnly))
{
package.ExtractFiles();
}
}
}
}
एक एमएसआई फ़ाइल COM structured storage है। यह मूल रूप से एक डेटाबेस है। आप MSDN पर कुछ विस्तृत प्रलेखन पा सकते हैं:
धन्यवाद। हालांकि यह मेरे लिए इस बिंदु पर सब बहुत जबरदस्त है ... सी # कोड के लिए कोई लिंक जो निष्कर्षण कर सकता है? – c00000fd
@ user843732, [इस परियोजना] की जांच करें (http://code.google.com/p/lessmsi/) – SingerOfTheFall
वह सिर्फ सामग्री को निकालने के बारे में जानना चाहता है। उसके लिए एपीआई है। उसे बाइनरी स्तर पर डेटाबेस संरचना को समझने की आवश्यकता नहीं है। –
- 1. एमएसआई पैकेज
- 2. एमएसआई सी #
- 3. एक एमएसआई पैकेज की चुप स्थापना
- 4. सी प्रोग्राम के भीतर से प्रोग्राम निष्पादित करें
- 5. WIX एमएसआई पैकेज अनइंस्टॉलेशन
- 6. मैं सी प्रोग्राम में स्टैक की सामग्री कैसे मुद्रित कर सकता हूं?
- 7. मैं सामग्री-स्वभाव हेडर की सामग्री कैसे पढ़ सकता हूं?
- 8. मैं एक एमएसआई सेटअप कैसे बना सकता हूं?
- 9. मैं फ्रीफॉर्म टेक्स्ट से डेटाटाइम कैसे निकाल सकता हूं?
- 10. मैं पीडीएफ फाइल से छवियों को कैसे निकाल सकता हूं?
- 11. मैं एसवीजी सामग्री को कैसे हटा या बदल सकता हूं?
- 12. सीएस/सी ++
- 13. मैं संकलन से कोड की कुछ पंक्तियों को आसानी से कैसे बाहर निकाल सकता हूं?
- 14. मैं स्मृति डंप से डीएलएल फ़ाइल कैसे निकाल सकता हूं?
- 15. मैं कैसे पता लगा सकता हूं कि कोई प्रोग्राम वाल्ग्रिंड के भीतर से चल रहा है या नहीं?
- 16. मैं स्वचालित रूप से फ़ाइल के रूप में OLEObject की सामग्री को कैसे सहेज सकता हूं?
- 17. क्या मैं अपने आईफोन ऐप की सामग्री स्पॉटलाइट के माध्यम से खोज सकता हूं?
- 18. पायथन 2.7 के डाउनलोड पैकेज "विंडोज x86 एमएसआई प्रोग्राम डेटाबेस" का उद्देश्य क्या है?
- 19. मैं जीयूआई के बिना सी # प्रोग्राम कैसे बना सकता हूं?
- 20. पैकेज के भीतर से गणित पैकेज लोड करें
- 21. मैं एक आरपीएम पैकेज पर निर्भर करता हूं या पैकेज बी कैसे बना सकता हूं?
- 22. मैं उस साइट से छवियों को कैसे निकाल सकता हूं जिसे मैं जोड़ रहा हूं?
- 23. मैं Emacs के भीतर से निर्देशिका कैसे बना सकता हूं?
- 24. मैं लोचदार खोज सूचकांक की सामग्री कैसे देख सकता हूं?
- 25. मैं पर्ल में संपीड़ित संग्रह कैसे निकाल सकता हूं?
- 26. मैं प्रोग्राम की स्थिति कैसे प्राप्त कर सकता हूं?
- 27. क्या मैं आईपैड 2 पर प्रोग्राम कर सकता हूं?
- 28. मैं एम्बेडेड संसाधन से फ़ाइल कैसे निकाल सकता हूं और इसे डिस्क पर सहेज सकता हूं?
- 29. क्या मैं आईडीई के भीतर से टीसीपी/आईपी का उपयोग कर प्रोग्राम चला सकता हूं और उन्हें काम करने की उम्मीद कर सकता हूं?
- 30. मैं div के भीतर गतिशील सामग्री के साथ एक अनियंत्रित सूची कैसे केंद्रित कर सकता हूं?
इस देरी के लिए धन्यवाद और खेद है। अगर यह एएसपी.नेट वेब ऐप से उपलब्ध है तो बस उत्सुक है? – c00000fd
मुझे नहीं लगता कि क्यों नहीं। –
क्षमा करें, अगर मैं कुछ बहुत सरल पूछ रहा हूं। जब मैं आपकी दो 'उपयोग' लाइनों को शामिल करता हूं, तो मुझे यह मिलता है: "त्रुटि CS0234: नाम या नामस्थान नाम 'परिनियोजन' नामस्थान 'माइक्रोसॉफ्ट' में मौजूद नहीं है (क्या आप एक असेंबली संदर्भ खो रहे हैं?)" – c00000fd