1

我想在安装期间使用 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 序列和成本最终确定之后的执行序列中安排了我的自定义操作。

请帮忙。

4

1 回答 1

5

在 InstallUISequence 和 InstallExecuteSequence 中,自定义操作应在 CostFinalize 之前运行。此外,MsiSetProperty 不是那样使用的,我认为它不会在 InstallScript 中工作。

您可以尝试使用:

INSTALLDIR = svInstallDir

或者

MsiSetProperty(hMSI, "INSTALLDIR", svInstallDir);
于 2011-05-18T06:21:29.627 回答