0

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

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

2 回答 2

0

行为取决于动作的调度。如果这是从延迟的自定义操作中调用的,它不能直接访问大多数属性,而是必须通过属性检索数据,而该属性CustomActionData又必须在调用操作之前设置。

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

于 2013-04-19T12:34:28.547 回答
0

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

返回值 ERROR_INVALID_HANDLE 提供了无效或非活动句柄。

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

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

ERROR_SUCCESS
函数成功。

于 2013-04-19T13:20:22.527 回答