Dan*_*iel 5 c# installation windows-installer orca dtf
我正在使用这些Microsoft.Deployment.WindowsInstaller库从 .msi 文件中读出值。属性没问题,summary-information也可以读出,例如:
static void Main(string[] args)
{
using (var database = new QDatabase(@"C:\myMsi.msi", DatabaseOpenMode.ReadOnly))
{
Console.WriteLine(database.ExecutePropertyQuery("ProductVersion"));
Console.WriteLine(database.ExecutePropertyQuery("ProductName"));
Console.WriteLine(database.ExecutePropertyQuery("Manufacturer"));
Console.WriteLine(database.ExecutePropertyQuery("ARPREADME"));
}
}
Run Code Online (Sandbox Code Playgroud)
该QDatabase对象甚至有一个很好的SummaryInfo属性,保存摘要信息。但是,我还没有找到如何获取 .MSI 所针对的平台。
好像可以读出平台,因为Orca也是这样做的(在Orca中打开Summary Information就可以看到平台)。
我怎样才能获得 .msi 所针对的平台?
您正在使用一个用于对数据库进行 LINQ 查询的类。ExecutePropertyQuery 是一种简化查询属性表的方法。正如您所指出的,您要查找的信息不在属性表中,而是在摘要信息流中。具体来说:
using Microsoft.Deployment.WindowsInstaller;
using(Database database = new Database(PATH_TO_MSI, DatabaseOpenMode.ReadOnly))
{
Console.WriteLine(database.SummaryInfo.Template);
}
Run Code Online (Sandbox Code Playgroud)
QDatabase 类还公开了 SummaryInfo 属性,因为它扩展了 Database 类。
可查询的 MSI 数据库 - 使用 LINQ 查询功能以及通用表的预定义实体类型扩展了基本数据库类。