从MSI(C#)中提取安装条件

时间:2011-02-22 12:54:52

标签: c# windows-installer launch conditional-statements msiexec

我们有一个大型C#应用程序,它使用.MSI文件进行部署,该文件是通过Visual Studio 2010(或MSBuild.exe)从.VDProj文件构建的。正常运行时,.MSI安装程序将检查是否已安装某些软件,并满足某些最低版本,并将生成有用的错误消息,并在不符合版本条件时退出。

一切正常。但是,我们正在使用msiexec.exe静默运行现有安装程序。如果已安装MSI所需的其他软件,则我们从msiexec返回0错误代码,同样,如果MSI因系统上不存在其他软件或未达到最低版本要求而失败,我们将获得返回非零错误代码。

有没有办法以编程方式查询.MSI文件并找出它的启动条件是什么?我尝试过使用msiexec从.MSI中提取文件,但我仍然看不到任何类型的配置文件,其中列出了安装的最低版本要求。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

询问MSI以查看内部条件确实会为您提供所述条件的列表,但不是哪一条失败。您可能希望使用/ L运行msiexec以切换到更好的日志记录(请参阅文档以获取精确的语法)。

如果条件列表足够,我建议你看看Orca(MSDN),这是一种窥视.msi文件的简单方法。