0

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

谢谢你。

4

1 回答 1

0

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

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

产品代码(字符串)

要枚举的产品实例的 ProductCode (GUID)。只有在 userSid 和 context 参数指定的上下文范围内的产品实例才会被枚举。此参数可以设置为 null 以枚举指定上下文中的所有产品。

用户 ID(字符串)

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

上下文(用户上下文)

指定用户上下文。

包装了 Win32 MSI API MsiEnumProductsEx 函数。这会带回一个 ProductInstallation 集合,您可以对其进行 Linq 查询以找出您需要了解的有关已安装 MSI 的任何信息。

于 2013-07-25T15:05:04.023 回答