0

我使用项目助手使用 InstallShield 2016 专业版创建了一个基本 MSI 安装程序项目。我没有创建任何组件/功能(只是创建了 deafulkt 功能)。安装程序应首先运行控制台应用程序(我作为安装程序的一部分添加,但不会安装),如果没有出现错误,只需将 WPF 应用程序(DLL 和 .exe)复制到客户端位置。

理想情况下,在建议的访谈对话之后,这些步骤是:

  1. 如果他/她想继续,提示他/她
  2. 如果 [no] 关闭进程,如果 [yes],显示一个自定义对话框,接受 SQL 连接字符串的三个字段
  3. 然后,将给定的参数作为输入,运行控制台应用程序。控制台应用程序仅运行一些 SQL 脚本,但不会安装,它是安装程序的一部分
  4. 在这一步之后(如何检查它是否完成并且没有发生错误?)复制项目助手中设置的文件(wpf .exe 和 DLL)。

在文档中,我读到使用自定义操作可以运行可执行文件,但我无法理解或找到有关如何将参数(命令行除外)传递给控制台应用程序或获取控制台应用程序产生的最终状态的详细信息。

谁能建议我如何实现这些步骤?

更新

在 InstallShield 中,可以在自定义操作之间创建属性,然后在需要的其他地方调用这些值,例如:[PropertyName]。

我可以这样做来为可执行命令行参数添加三个属性:
i=[DB_CONN_INSTANCE_NAME] u=[DB_CONN_USER_NAME] p=[DB_CONN_PWD]

4

2 回答 2

1

如何检查它是否已完成并且没有发生错误?

您的控制台应用程序应返回 ExitCode。0(零)表示成功,任何其他数字都表示失败。在您的自定义操作 (CA) 属性中,您应该为“返回处理”属性选择“同步(检查退出代码)”。由于您想在安装时运行此 CA,您应该为“In-Script Execution”属性选择“Deferred Execution”。您至少应该写条件,因为您希望这仅在安装期间发生,而不是在用户删除产品时发生,是吗?在这种情况下,请完成“安装执行条件”。如果您设置了上述所有内容,我相信此 CA 的 MSI 类型编号将为 1026。

在哪里可以找到一些更详细的文档?

给你:自定义操作

编辑:

如果我测试应用程序,我不会得到控制台应用程序运行的任何提示。另外,如果可执行文件成功,我该如何指定继续执行第二个自定义函数(应该安装 WPF 应用程序)?

您需要设置“安装执行顺序”才能在特定时间运行您的 CA。CA 的延迟类型必须安排在“InstallFiles”之后的某个地方。有关如何安排 CA 阅读的更多信息:排序自定义操作。当您使用“同步(检查退出代码)”属性安排控制台应用程序 CA 时,安装程​​序将在您的 CA 退出时等待,并且仅在该继续序列之后。您的第二个 CA 应该安排在第一个 CA 之后。很简单,你绝对是在正确的轨道上。

是否可以调试基本 MSI 的步骤?

我不确定你在这里问什么。据我了解,您正在使用 InstallShield Studio,因此请运行调试并逐步执行。如果您询问调试 CA 本身,您应该查看以下资源:调试自定义操作

于 2017-03-02T20:46:45.630 回答
1

您可以在安装期间在运行自定义程序上参考此链接

于 2017-03-03T06:54:11.493 回答