Windows इंस्टालर XML के तैनाती उपकरण फाउंडेशन (WiX DTF) जो Microsoft.Deployment.WindowsInstaller एमएसआई इंटरॉप पुस्तकालय भी शामिल है Microsoft से एक खुला स्रोत परियोजना है। इस तरह के प्रश्नों को करने के लिए इसका उपयोग करना कहीं अधिक आसान और अधिक विश्वसनीय है। इसमें एमएसआई प्रदाता के लिए एक LINQ भी है जो आपको एमएसआई टेबल को संस्थाओं के रूप में और उनके खिलाफ प्रश्न लिखने की अनुमति देता है।
string sql = String.Format("SELECT `Value` FROM `Property` WHERE `Property`='{0}'", msiProperty);
एकल से सावधान रहें:
using System;
using System.Linq;
using Microsoft.Deployment.WindowsInstaller;
using Microsoft.Deployment.WindowsInstaller.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
using(var database = new QDatabase(@"C:\tfs\iswix.msi", DatabaseOpenMode.ReadOnly))
{
var properties = from p in database.Properties
select p;
foreach (var property in properties)
{
Console.WriteLine("{0} = {1}", property.Property, property.Value);
}
}
using (var database = new Database(@"C:\tfs\iswix.msi", DatabaseOpenMode.ReadOnly))
{
using(var view = database.OpenView(database.Tables["Property"].SqlSelectString))
{
view.Execute();
foreach (var rec in view) using (rec)
{
Console.WriteLine("{0} = {1}", rec.GetString("Property"), rec.GetString("Value"));
}
}
}
Console.Read();
}
}
}
स्रोत
2012-12-20 18:41:14
जो लाइन पर अपवाद फेंक दिया जाता है? –
आपकी क्वेरी संपत्ति नाम के आसपास कुछ अजीब उद्धरण कैरेक्टर हैं: 'कहां संपत्ति = '{0}'' 'होना चाहिए जहां संपत्ति = '{0}''। –
दृश्य दृश्य = डेटाबेस पर अपवाद फेंक दिया गया है। ओपन व्यू (एसक्यूएल); –