【问题标题】:Set executable run order in Basic MSI project with installShield使用 installShield 在 Basic MSI 项目中设置可执行运行顺序
【发布时间】:2017-03-02 15:31:38
【问题描述】:

我使用项目助手使用 InstallShield 2016 Professional 创建了一个基本 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]

【问题讨论】:

  • @Slava 自您更新以来没有时间重新检查答案。我接受了;)
  • 很高兴,这对你有用。最好的问候。

标签: wpf installshield basic-msi


【解决方案1】:

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

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

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

给你:Custom Actions

编辑:

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

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

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

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

【讨论】:

  • 感谢您的信息。我创建了一个自定义对话框,将输入参数转换为变量,然后使用您建议的设置(MSI 类型号 1042,我不需要它在 unistall 上运行)将其用作自定义操作可执行文件的参数。如果我测试应用程序,我不会得到控制台应用程序运行的任何提示。另外,如果可执行文件成功,我该如何指定继续执行第二个自定义函数(应该安装 WPF 应用程序)?是否可以调试基本 MSI 的步骤?
【解决方案2】:

您可以参考Run custom program during installation上的此链接

【讨论】:

  • 感谢链接,它给了我一个很好的提示,告诉我从哪里开始,但我的情况略有不同。我无法在设置中提供命令行参数(它们是 SQL 连接字符串的一部分),我更新了问题以反映详细信息。
  • @Luca 然后你不需要从命令行调用它们。只需创建一个 Windows 窗体或 WPF 应用程序。使用可执行文件作为自定义操作。添加该自定义操作。该操作可以处理用于确认的消息和用于输入详细信息的表单。然后使用自定义操作应用程序,运行您要运行的脚本。然后从那里开始安装。
  • 在我的项目中,我将 WPF exe 链接到“IS_LAUNCH_MY_PROGRAM_PLEASE”自定义操作(在项目帮助步骤中默认创建)。我添加了一个自定义对话框来从用户那里获取数据库连接。我使用“NEW EXE”创建了一个自定义操作,并选择了我的 consoleApp.exe,在其命令行属性中,我设置了上述属性(如 user=[IDS_USER])。当单击“安装”按钮(在 ReadyToInstall 对话框中)时,我仍然不知道如何调用此自定义操作。
  • 我尝试将“DoAction”添加为新事件,条件 = 1,操作值是我的自定义操作的名称,但在运行时我收到错误 1721。Windows 安装程序有问题包裹。无法运行完成此安装所需的程序。操作:myActionName。
猜你喜欢
  • 2014-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多