Java Web Start ExtensionInstallerService - 如何获取应用程序中的安装路径?

时间:2016-09-21 18:04:18

标签: java java-web-start jnlp

Java Web Start具有在安装(和卸载)应用程序时调用的ExtensionInstallerService。它允许在getInstallPath() API提供的本地目录中安装“扩展”,其内容如下:

  

java.lang.String getInstallPath()

     

返回建议安装程序安装扩展程序的目录。安装程序不需要安装在此目录中,这只是建议的路径。

我现在想知道如何在正在运行的Web Start应用程序中获取所提供的安装路径(application-desc JNLP元素中定义的内容)。

我已经检查了运行应用程序的JVM的系统属性。那里有deployment.*个属性,但不是扩展安装程序使用的安装路径。 ExtensionInstallerService本身在正在运行的应用程序中不可用 - 因此无法在那里调用getInstallPath()

1 个答案:

答案 0 :(得分:2)

使用ServiceManager.lookup("javax.jnlp.ExtensionInstallerService")访问服务实例,然后根据需要使用其方法。

  

向JNLP客户端询问具有给定名称的服务。查找必须是幂等的,即为每个具有相同名称的调用返回相同的对象。

     

<强>参数:

     

name - 要查找的服务名称。

     

<强>返回:

     

实现服务的对象。永远不会退回null。相反会抛出异常。

     

<强>抛出:

     

UnavailableServiceException - 如果该服务不可用,或者名称为null

修改

  

我在扩展安装程序类(JNLP元素ExtensionInstallerService)中查找installer-desc没有问题,但此服务在正在运行的应用程序中不可用(JNLP元素application-desc)。

嗯,没有意识到。在任何情况下,在扩展安装程序代码中,为用户提供安装扩展的位置,然后使用PersistenceService存储该路径。