我需要在安装之外从 MSI 数据库解析目标路径。我目前正在使用 Wix SDK 通过查询数据库的目录和文件表并从那里构造路径来执行此操作,但解析路径似乎应该已经内置。是否有一个图书馆可以做到这一点,甚至是非官方的,还是我坚持自己做?
这个问题已经被问到C++,但唯一的答案不知何故误解了这个问题是关于字符串的。
我真的不介意表演。我真正关心的是解决特殊文件夹,如“.:Fonts”、“.:Windows”、“.:WinRoot”等——我仍然可以在我自己的代码中这样做,但不是很优雅。
我需要在安装之外从 MSI 数据库解析目标路径。我目前正在使用 Wix SDK 通过查询数据库的目录和文件表并从那里构造路径来执行此操作,但解析路径似乎应该已经内置。是否有一个图书馆可以做到这一点,甚至是非官方的,还是我坚持自己做?
这个问题已经被问到C++,但唯一的答案不知何故误解了这个问题是关于字符串的。
我真的不介意表演。我真正关心的是解决特殊文件夹,如“.:Fonts”、“.:Windows”、“.:WinRoot”等——我仍然可以在我自己的代码中这样做,但不是很优雅。
当 DTF 第一次出现时,我做了和你一样的事情。我编写了所有查询和循环来获取我正在处理的数据。表演有点痛苦。
然后我注意到 Microsoft.Deployment.WindowsInstaller.Package 程序集中的 InstallPackage 类。当我看到以下代码使用该类的速度和简单程度时,我感到有点傻:
using System;
using Microsoft.Deployment.WindowsInstaller;
using Microsoft.Deployment.WindowsInstaller.Package;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
using (var package = new InstallPackage("foo.msi", DatabaseOpenMode.ReadOnly))
{
foreach (var filePath in package.Files)
{
Console.WriteLine(filePath.Value);
}
Console.WriteLine("Finished");
Console.Read();
}
}
}
}