在Basic MSI中从Installscript更新INSTALLDIR

时间:2011-05-17 21:08:10

标签: installshield installscript

我想使用Installscript在安装期间更改安装程序的INSTALLDIR值。我该怎么办? 我已经尝试过以下方法: 创建了一个自定义操作:

function InitializeValues(hMSI)
    STRING svProductName; 
    STRING svInstallDir;  
    NUMBER nvSize;
begin                        
    nvSize=255; 
    MsiGetProperty (hMSI, "ProductName", svProductName, nvSize);  
    if(svProductName = "Notepad Pro") then  
         svInstallDir = PROGRAMFILES ^ svProductName;
 //     MsiSetTargetPath(hMSI,INSTALLDIR,svInstallDir);      
        MsiSetProperty(hMSI,INSTALLDIR,svInstallDir);
        MessageBox(INSTALLDIR,INFORMATION);
    endif;
end;

我的自定义操作已执行,但INSTALLDIR的值不会更改。我已经在成本最终确定之前在UI序列中安排了我的自定义操作,并且在成本结束后在执行顺序中安排了

请帮忙。

1 个答案:

答案 0 :(得分:5)

在InstallUISequence和InstallExecuteSequence中,自定义操作应在CostFinalize之前运行。此外,MsiSetProperty没有这种方式使用,我认为它不会在InstallScript中使用。

您可以尝试使用:

INSTALLDIR = svInstallDir

MsiSetProperty(hMSI, "INSTALLDIR", svInstallDir);