使用installShield在Basic MSI项目中设置可执行的运行顺序

时间:2017-03-02 15:31:38

标签: wpf installshield basic-msi

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

理想情况下,在采访对话建议之后,步骤将是:

  1. 提示他/她是否要继续使用
  2. 如果[no]关闭进程,如果[yes],则显示一个自定义对话框,接受SQL连接字符串的三个字段
  3. 然后,使用给定参数作为输入,运行控制台应用程序。控制台应用程序只运行一些SQL脚本,但它不会安装,它是安装程序的一部分
  4. 完成此步骤后(如何检查完成并且没有发生错误?)复制项目助手中设置的文件(wpf .exe和DLL)。
  5. 在我阅读的文档中,通过自定义操作可以运行可执行文件,但我无法理解或查找有关如何将参数(从命令行除外)传递到控制台应用程序或获取最终状态的详细信息。控制台应用。

    任何人都可以建议我如何实现这些步骤?

    更新

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

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

2 个答案:

答案 0 :(得分:1)

  

如何检查完成并且没有发生错误?

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

  

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

在这里:Custom Actions

编辑:

  

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

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

  

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

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

答案 1 :(得分:1)

您可以参考Run custom program during installation

上的此链接