无法获得主要版本的产品?

时间:2013-04-19 12:21:34

标签: installer windows-installer installshield installscript installscript-msi

我有代码来检索产品的主要版本。声明属性为PRODVER_MAJOR = 2 代码如下:

function myfunction(hMSI)
    string svmajorversion;
    number nsize;
begin
    nsize = 256;
    MsiGetProperty (ISMSI_HANDLE, "PRODVER_MAJOR", svmajorversion, nsize);
    MessageBox ("MajorVersion:" +svmajorversion, INFORMATION);
end

2 个答案:

答案 0 :(得分:0)

行为取决于行动的安排。如果从延迟的自定义操作中调用它,则它无法直接访问大多数属性,而是必须通过属性CustomActionData检索数据,而属性ISMSI_HANDLE必须在调用操作之前设置。

在任何一种情况下,我都建议使用hMSI替换使用{{1}}(在事件期间主要有用的通用全局句柄)(该句柄专门传递给此自定义操作)。

答案 1 :(得分:0)

实际检查MsiGetProperty function的返回值可能会有所帮助。

  

返回值ERROR_INVALID_HANDLE    无效或无效的句柄是   提供。

     

ERROR_INVALID_PARAMETER
  无效参数传递给   功能

     

ERROR_MORE_DATA
  提供的缓冲区太小,无法容纳整个缓冲区   值。

     

ERROR_SUCCESS
  功能成功了。