【问题标题】:Passing Installation Path as input to dll - basic MSI - InstallShield 2012将安装路径作为输入传递给 dll - 基本 MSI - InstallShield 2012
【发布时间】:2012-10-06 10:24:09
【问题描述】:

将从目标文件夹对话框中选择的安装路径作为输入传递给自定义对话框中的 DLL。

我正在使用 InstallShield 2012 设计一个基本的 MSI 安装程序项目。我设计了一个自定义对话框以在自定义对话框中获取用户登录信息等,并将详细信息传递给 DLL,然后相应地创建一个数据库。但是我需要知道如何将安装路径 [在目标文件夹对话框 中选择] 作为输入传递给 dll,以便在正确的文件夹中创建我的数据库。我的 DLL 操作是在 Installfiles 之后执行的。

提前致谢!!如果您无法理解上述内容,我很乐意解释..

【问题讨论】:

    标签: windows-installer installshield-2012 basic-msi


    【解决方案1】:

    您不能像在命令行中那样直接将值传递给 DLL。

    您将用户输入的值存储在一个属性中,然后您的 DLL 自定义操作使用 MsiGetProperty 从 MSI 会话中获取这些属性。

    如果您的自定义操作需要在安装程序的提交阶段运行,您必须将这两个值打包到 CustomActionData 属性中。请参阅Obtaining Context Information for Deferred Execution Custom Actions 了解更多信息。

    【讨论】:

    • 我尝试从我的自定义对话框中使用参数 INSTALLDIR 调用 dll 函数,并且我能够在 IMMEDIATE Execution 中获取安装路径,但是你的意思是说当我尝试延迟执行时这不起作用? ?
    • 是的,它不适用于延迟执行。在这种情况下,在执行序列中您必须设置MyCustomActionName 属性,并在您的函数中以名称CustomActionData 获得它;这里MyCustomActionName 是您的延迟自定义操作的名称。也就是说,您设置了一个与自定义操作同名的属性。并且只有 一个 属性可以传递给延迟的自定义操作。
    • 我需要将包括安装目录在内的十个字段传递给dll,以便它可以创建数据库,有什么办法可以解决这个问题吗?
    • [链接]helpnet.flexerasoftware.com/installshield19helplib/helplibrary/… 。使用 CustomActionData 访问多个属性...这应该可以正常工作吗??
    • 是的,它会起作用的。但是,您应该知道符号 ';'它本身成为您传递的任何属性的值的无效符号,因为它现在具有特殊含义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-12
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多