如何使用MsiGetProductInfo获取已安装的版本号c#winforms 4.0?

时间:2011-04-12 12:54:20

标签: c# winforms windows-installer

我正在尝试使用MsiGetProductInfo函数获取我的win fomrs应用程序的已安装版本号。我试着改变我在这个post上找到的代码,但是当我改变对函数的调用时,我得到的只是看到文本

MsiGetProductInfo("{9806C9BE-59D4-4DEE-802F-0E492023DE8A}", "INSTALLPROPERTY_VERSIONSTRING", builder, ref len);

它是一个安装有标准vs2010安装项目的4.0 c#Winforms项目。客户端机器赢了7并赢得XP

2 个答案:

答案 0 :(得分:0)

您是否检查了该功能的返回值?如果它返回错误,则缓冲区可能会被垃圾填满。

这是MSDN页面here

中可能返回的列表

返回值

ERROR_BAD_CONFIGURATION 配置数据已损坏。

ERROR_INVALID_PARAMETER 将无效参数传递给函数。

ERROR_MORE_DATA 缓冲区太小,无法容纳请求的数据。

ERROR_SUCCESS 该功能成功完成。

ERROR_UNKNOWN_PRODUCT 该产品未公开或未安装。

ERROR_UNKNOWN_PROPERTY 该物业未被承认。

注意如果要查询的应用程序已公布但未安装,则MsiGetProductInfo函数将返回ERROR_UNKNOWN_PROPERTY。

答案 1 :(得分:0)

我知道这已经很老了,但是最近我遇到了类似的问题,解决方法是将“ INSTALLPROPERTY_VERSIONSTRING”更改为“ VersionString”