如何在C#中解析MSI路径?

时间:2013-01-30 19:10:57

标签: c# wix windows-installer

我需要在安装之外的MSI数据库中解析目标路径。我目前正在使用Wix SDK执行此操作,查询数据库的目录和文件表并从那里构建路径,但解析路径似乎应该已经内置了。是否有一个图书馆可以做到这一点,即使是非官方的东西,还是我坚持自己做这件事?

对于C ++,这个问题有already been asked,但唯一的答案却误解了关于字符串的问题。

我真的不介意表现。我真正关心的是解析特殊文件夹,如“。:Fonts”,“。:Windows”,“。:WinRoot”等 - 我仍然可以在自己的代码中完成,但不是很优雅。

1 个答案:

答案 0 :(得分:5)

我做了同样的事情,你在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();
            }
        }
    }
}
相关问题