接收已安装的MSI包的名称和版本

时间:2013-07-25 14:44:56

标签: c# .net windows-installer

我需要从C#项目获取本地计算机上所有已安装的MSI包的名称和版本。有什么想法吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

我将查看Windows Installer XML(WiX)部署工具基础(DTF)中的Microsoft.Deployment.WindowsInstaller命名空间。它有:

public static IEnumerable<ProductInstallation> GetProducts(
    string productCode,
    string userSid,
    UserContexts context
)
  

productCode(String)

     

产品实例的ProductCode(GUID)   列举。仅限上下文范围内的产品实例   将枚举userSid和context参数指定的内容。   此参数可以设置为null以枚举中的所有产品   指定的背景。

     

userSid(String)

     

指定安全标识符   (SID)限制枚举的上下文。其他SID值   比s-1-1-0被认为是用户SID并将枚举限制为   当前用户或系统中的任何用户。特殊的SID字符串s-1-1-0   (Everyone)指定系统中所有用户的枚举。这个   参数可以设置为null以将枚举范围限制为   当前用户。当context仅设置为机器上下文时,userSid   必须为null。

     

context(UserContexts)

     

指定用户上下文。

包装Win32 MSI API MsiEnumProductsEx函数。这将带回一系列ProductInstallation,您可以对Linq进行查询,以找出有关已安装的MSI的任何信息。