使用Install4J下载和安装额外的应用程序

7

我正在使用Install4J来构建我的应用程序(让我们称其为MainApp)的安装程序,它表现得非常出色。

要使用MainApp,您还需要安装我的第二个应用程序(让我们称其为SecondApp)。

我的问题是这样的。有没有办法让Install4J首先安装MainApp,并在安装的最后一步下载SecondApp(位于Web服务器上的exe文件)并执行它?

1个回答

8
您可以通过在“安装”屏幕上添加两个操作来实现:
  • “下载文件”操作,用于下载“SecondApp”安装程序

  • “运行可执行文件或批处理文件”操作,用于执行它。选择“等待终止”属性以等待安装程序完成。

为了改善用户反馈,请在“运行可执行文件或批处理文件”操作之前添加以下两个操作:
  • “设置进度条”操作,将“更改类型”设置为“设置为不确定状态”

  • “设置消息”操作,选择“使用状态”并将“状态消息”设置为“正在安装第二个应用程序…”

如果您不想保留“SecondApp”安装程序可执行文件,则使用${installer:sys.workingDir}/secondapp.exe将其下载到安装程序的临时目录中。安装程序退出时,它将被自动删除。

我好像无法让它工作。在尝试设置时,Install4j实际上会反复崩溃,但是我并不清楚将SecondApp安装程序制作为可下载组件的过程。我知道可以在“安装组件->选项”下将其标记为此类组件,并且应该能够在“Media->Data Files->downloadable”下指定要从中下载的URL,但我无法让其工作。自你回答后是否有所改变? - adamfisk
@adamfisk 不,还是一样的。请联系支持团队,并向我们发送有关崩溃的详细信息。 - Ingo Kegel
@IngoKegel 好的,我找到了顶层问题——我使用了“下载并安装组件”操作,并错过了更新下的直接“下载文件”操作。话虽如此,“下载文件”操作对我来说经常会无缘无故地中断。这似乎也不支持HTTPS?后者对我们来说绝对是个破绽,实际上对于任何安装程序都应该是这样。我一直在下载以下内容时被不断打断:http://s3.amazonaws.com/lantern/lantern-0.21.3-9-ff18154.dmg - adamfisk
好的 - 已经解决了。在Wireshark中查看TCP流时,下载文件操作在下载约5MB后不断中断。如果在下载文件操作配置下取消选中“中断后重试”,它就不会再被中断并且似乎可以正常工作! - adamfisk
@adamfisk 这真的很奇怪,该设置仅在下载期间抛出异常时才会生效。您可以更改的一件事是读取超时时间,默认设置为10秒。如果您在安装程序中设置VM参数-Dinstall4j.readTimeout=0(以毫秒为单位),则不会有超时。 - Ingo Kegel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接