Install4J:在无人参与模式下更新多个服务后,如何在不提示用户输入密码的情况下重新启动多个服务

Install4J:在无人参与模式下更新多个服务后,如何在不提示用户输入密码的情况下重新启动多个服务,install4j,Install4j,我使用Install4J安装我的应用程序,它由一个JAR中的两个服务(两个启动器)组成。我想在无人参与模式下更新我的应用程序,然后停止这两个服务并启动这两个服务,而无需要求用户输入管理员密码。这两个服务最初都是以root用户身份启动的,当其中一个服务调用ApplicationLauncher.launchApplication Install4J集成API方法时,我已使用“ps”命令验证它们是否以root用户身份运行 我的Install4J更新程序能够下载新版本并停止调用启动器,但我看到的问题是

我使用Install4J安装我的应用程序,它由一个JAR中的两个服务(两个启动器)组成。我想在无人参与模式下更新我的应用程序,然后停止这两个服务并启动这两个服务,而无需要求用户输入管理员密码。这两个服务最初都是以root用户身份启动的,当其中一个服务调用ApplicationLauncher.launchApplication Install4J集成API方法时,我已使用“ps”命令验证它们是否以root用户身份运行

我的Install4J更新程序能够下载新版本并停止调用启动器,但我看到的问题是,我无法停止第二个(非调用启动器),也无法启动调用启动器

这个错误非常奇怪,因为我注意到如果我停止两个服务,然后使用

sudo <ServiceLauncher1> stop
sudo <ServiceLauncher2> stop
sudo <ServiceLauncher1> start
sudo <ServiceLauncher2> start
sudo站
sudo站
sudo启动
sudo启动
整件事都起作用了。它下载更新,停止两个服务,然后正常启动两个服务。我注意到(在OSX中)自动更新程序的启动器图标也不同(黑色终端图标(不工作)和白色java图标(工作)

我非常感谢您在这方面的帮助。谢谢!

就我而言(两项服务),更新安装程序作为启动它的服务的子进程运行。由于更新进程的一部分要求停止然后启动这两个服务,问题是停止调用服务会导致整个更新安装程序被终止

我的解决方案是在Install4J中使用两个更新应用程序,让每个服务停止/启动另一个服务

服务#1-->更新程序#1:

  • 检查新版本
  • 下载新版本
  • 安装新版本
  • 停止服务#2
  • 启动服务#2(此时,服务#2已完全更新并运行)
  • 通知服务#2对服务#1执行更新
  • 服务#2-->更新程序#2:

  • 停止服务#1
  • 启动服务#1(此时,服务#1已完全更新并运行)

  • 这一切都在Mac OS X上?更新安装程序应该停止服务。如果它以root用户身份运行,我不明白为什么它不能这样做。你能将更新安装程序的日志文件发送到吗support@ej-technologies.com?是的,我描述的问题是在Mac OS X上,但我需要一个既适用于Mac OS X又适用于Windows的解决方案是否找到更新安装程序的日志文件?我在.install4j目录中看到installation.log,但没有其他看起来正确的内容。如果“Install Files”为空,更新安装程序还会将其日志文件复制到.install4j\installation.log操作成功。您可以传递参数
    -Dinstall4j.keepLog=true-Dinstall4j.alternativeLogfile=[path to log file]
    将日志文件写入特定路径。您可以在名为“设置安装程序参数”的操作中添加这些参数在项目中的updater installer应用程序中。可能它没有执行更新安装程序。updater installer应用程序是否成功运行?您可以将
    -Dinstall4j.keepLog=true-Dinstall4j.alternativeLogfile=/altinstall.log
    添加到“VM参数”中属性来获取that.OK的日志文件,因此这可能不可能。可能您需要另一个从未停止的服务,其唯一任务是运行更新程序。