从 Basic MSI 中的 Installscript 更新 INSTALLDIR

发布于 2024-11-07 12:49:19 字数 699 浏览 0 评论 0原文

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

请帮忙。

I want to change the INSTALLDIR value for my Installer during Installation using Installscript. How should I do it?
I have already tried the following:
Created a custom action as:

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;

My custom action gets executed but the value of INSTALLDIR does not changes. I have scheduled my custom action in UI Sequence before Cost Finalize and in Execute Sequence After Cost Finalize.

Please help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

吻风 2024-11-14 12:49:19

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

您可以尝试使用:

INSTALLDIR = svInstallDir

MsiSetProperty(hMSI, "INSTALLDIR", svInstallDir);

In both InstallUISequence and InstallExecuteSequence the custom action should run before CostFinalize. Also, MsiSetProperty is not used that way and I don't think it will work in InstallScript.

You can try using:

INSTALLDIR = svInstallDir

or

MsiSetProperty(hMSI, "INSTALLDIR", svInstallDir);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文