自定义操作中的第三方 exe - installshield
Posted
技术标签:
【中文标题】自定义操作中的第三方 exe - installshield【英文标题】:Third party exe in custom actions - installshield 【发布时间】:2014-05-22 21:35:22 【问题描述】:我正在使用 InstallShield 创建一个 msi 安装包。
我有一个自定义操作来安装第三方 exe。这个 exe 有一个 UI,它提示用户单击“是”或“否”。如果用户单击否,则该 exe 未安装,但 msi 安装继续。一旦用户中断第三方 exe 的安装,我想结束 msi 安装。
在任何一种情况下(无论用户单击是还是否),返回值都是 1。所以我被卡住了。
你能帮我解决这个问题吗?
【问题讨论】:
【参考方案1】:如果这是一个依赖项,请不要使用自定义操作安装它。这就是 seup.exe 类型的引导程序的用途。他们安装所需的先决条件(如 .NET Frameworks 和 C++ 运行时),然后启动您的 MSI 安装。
不使用自定义操作的另一个原因是与您放置自定义以安装此第 3 方 exe 的位置有关。如果你把它放在你的 UI 序列中,那么你不能静默安装你的 MSI(因为 UI 序列被抑制),如果你把它放在执行序列中,如果它基于 MSI,它将失败,因为你不能有递归 MSI 安装(你打电话给另一个)。
【讨论】:
我同意这一点。我认为任何有经验的人都会尽可能避免通过自定义操作安装任何东西。【参考方案2】:EXE 是否接受任何命令行参数以使其静音?一般来说,这是一件坏事,因为:
1) EXE 可能会失败并给人以安装程序失败的印象。
2) 可能会失败并吞下错误。
3) 不记录到您的 MSI 日志,并且可能根本不记录。
4) MSI 不知道 EXE 所做的更改,因此不支持回滚、弹性、卸载
名单还在继续。
【讨论】:
【参考方案3】:安装第三方 exe 作为先决条件。 InstallShield 允许您定义自己的先决条件,并且 InstallShield 的引导程序能够处理先决条件。
【讨论】:
以上是关于自定义操作中的第三方 exe - installshield的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio Installer 设置属性简介
如何在自定义操作 DLL (MSI/Wix) 中获取“INSTALLED”属性?