我需要从C#项目获取本地计算机上所有已安装的MSI包的名称和版本。有什么想法吗?
谢谢。
答案 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的任何信息。