zoukankan      html  css  js  c++  java
  • InstallShield 2012新功能试用(2) 调用MsiGetProperty等MSI API发生变化

    在InstallShield 2012的Basic MSI工程中,我们在Custom Action里通过InstallScript调用MSI的API时发生了变化。

    比如下面这段代码,我们在InstallShield 2011里获取UpgradeCode:

    function MsiGetProperty_2011(hMSI)   
    STRING szPropertyName, svPropertyValue;
    NUMBER nvBufferSize;
    begin
    szPropertyName = "UpgradeCode"; 
               
    MsiGetProperty(hMSI, szPropertyName, svPropertyValue, nvBufferSize);
    MessageBox(svPropertyValue, INFORMATION);

    end;   

    上面这段代码,如果我们放到InstallShield 2012中,svPropertyValue的值为空,正确调用方法如下:

    function MsiGetProperty_2012(hMSI)   
    STRING szPropertyName, svPropertyValue;
    NUMBER nvBufferSize;
    begin
    szPropertyName = "UpgradeCode";  
    nvBufferSize = 256;
               
    MsiGetProperty(hMSI, szPropertyName, svPropertyValue, nvBufferSize);
    MessageBox(svPropertyValue, INFORMATION);
    end;

    要指定一个合适的nvBufferSize值,如果按照以前方法调用不赋值,则默认为0,这样将导致我们无法获得正确的Property值。

    详细见:http://support.installshield.com/kb/view.asp?articleid=Q211163 的“Changes in Behavior for Some MSI APIs That Are Called in InstallScript Custom Actions”一节。

  • 相关阅读:
    第三次随笔作业
    第二次随笔作业
    第一次随笔
    第四次随笔作业
    第三次随笔作业
    第二次随笔作业
    第一次博客
    第四次作业
    第三次作业(2)
    第二次随笔(修改版3)
  • 原文地址:https://www.cnblogs.com/wanbinghong/p/2178856.html
Copyright © 2011-2022 走看看