【问题标题】:InstallShield: How to invoke Custom Action only when feature selectedInstallShield:如何仅在选择功能时调用自定义操作
【发布时间】:2013-07-25 10:31:26
【问题描述】:

我有具有两个功能的 InstallShield Basic MSI 项目:A 和 B。

用户可以运行生成的 setup.exe,按照安装向导,选择自定义安装类型,选择功能 A 或(和)B 进行安装,然后单击安装。并且只应安装选定的功能。

我的问题是 - 功能 A 有它自己的 setup.exe(实际上这是带有自定义安装向导的独立安装程序),如果用户选择此功能并单击安装,我想启动此 setup.exe。主安装对话框应该暂停,直到我完成功能 A 的安装对话框。 功能 B 的安装(功能 B 没有任何安装对话框,只是将几个 dll 复制到目标文件夹并注册其中一些)应该仅在我完成功能 A 时开始。

如何使用 InstallShield 自定义操作获得此行为?我应该为此自定义操作设置什么执行顺序和执行条件?

【问题讨论】:

    标签: installshield custom-action


    【解决方案1】:

    Conditional Statement Syntax

    您可以编写像 &FEATURENAME=3 这样的语句。我个人倾向于使用组件而不是功能。这取决于自定义操作做什么以及依赖关系是什么。

    也就是说,您的设计并不是真正有效的。 Windows Installer 具有互斥锁,可阻止您尝试执行的操作。您应该真正查看设置和功能先决条件或套件安装程序来创建链式安装程序解决方案。

    【讨论】:

    • 克里斯托弗,谢谢你的回答。在编写本主题的第一个问题之前,我尝试了功能先决条件(我将功能的 setup.exe 设置为在先决条件属性中运行的应用程序并设置先决条件的条件安装设置)。但是这种方法在安装过程中会导致错误。我将尝试描述它:我选择我的功能A并单击安装->出现功能A的向导->功能A的安装过程开始->移动数据过程中发生错误-113。
    • 还有一件重要的事情我想添加到我之前的消息中。我只想为我的产品安装提供 setup.exe 文件(单一可执行安装映像类型)。因此,当我选择要安装此功能时启动的功能可执行文件应包含在 setup.exe 中,并将“从 Setup.exe 提取”设置为其先决条件位置。我想这个事实可能会导致我上面描述的错误。
    • 移动数据进程 -113 听起来像是旧的 InstallShield InstallScript 错误消息。我已经好几年没听过了,所以我不知道如何解决问题。您的父安装程序听起来像是正确创作并调用子安装程序,然后失败。在那里寻找你的问题。是的,InstallShield 可以将所有先决条件压缩到一个 setup.exe 中。
    • 一个快速的谷歌告诉我尝试以管理员身份运行你的 setup.exe,看看这是否会使 113 错误消失。 InstallShield 有一些控制海拔高度的设置,您必须对其进行调整。
    • 我试过了,还是没有成功。我想另一件事可能会导致此错误。 Windows 安装程序可以将一些数据提取到 C:\users\username\AppData\Local\Temp。在我的情况下发生了什么:1)我启动主 setup.exe 2)C:\users\username\AppData\Local\Temp\{D8725459-0BF7-47A7-818A-13A9F8FFB837} 创建 3)我选择功能并单击安装4)我看到创建了其他文件夹 C:\users\username\AppData\Local\Temp\{065152E6-58B9-447C-9517-21B28CC6D6C4} 并且我的功能的 setup.exe(连同它使用的 dll)是放在那里。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-31
    相关资源
    最近更新 更多