Обновление INSTALLDIR из Installscript в Basic MSI - PullRequest
1 голос
/ 18 мая 2011

Я хочу изменить значение INSTALLDIR для моего установщика во время установки с использованием Installscript. Как я должен это делать? Я уже пробовал следующее: Создал пользовательское действие как:

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 не изменяется. Я запланировал свое настраиваемое действие в последовательности пользовательского интерфейса до завершения затрат и в последовательности выполнения после завершения затрат.

Пожалуйста, помогите.

1 Ответ

5 голосов
/ 18 мая 2011

Как в InstallUISequence, так и в InstallExecuteSequence пользовательское действие должно выполняться перед CostFinalize. Кроме того, MsiSetProperty не используется таким образом, и я не думаю, что он будет работать в InstallScript.

Вы можете попробовать использовать:

INSTALLDIR = svInstallDir

или

MsiSetProperty(hMSI, "INSTALLDIR", svInstallDir);
...