我需要在 MAC 上安装 .dmg 时传递命令行参数,为此我使用了 JNLP,它使用 JSP 动态组合,响应内容类型为application/x-java-jnlp-file
. JSP的内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="http://10.40.42.134:8080/TestJNLP/">
<information>
<title>jnlp.JSP</title>
<vendor>Sun Microsystems, Inc.</vendor>
</information>
<resources>
<j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se"/>
<jar href="lib/faren2.jar" main="true" />
</resources>
<application-desc name="Dynamic Tree Demo Application" main-class="org.Test" width="300" height="300">
<argument><%=request.getParameter("arg1")%></argument>
<argument><%=request.getParameter("arg2")%></argument>
</application-desc>
<security>
<all-permissions/>
</security>
</jnlp>
使用我传递的参数正确调用了 JNLP。
现在有两个问题进一步发展:
首先,在触发 JNLP 后,我的主类调用saveFileDialog
fromFileSaveService
以将 .dmg 保存在用户系统上,但 JNLP 客户端(在 MAC 上打开的保存对话框)忽略了我在调用该方法时传递的名称和扩展名。我们如何让 JNLP 客户端尊重我传递的名称和扩展名?
其次,我如何知道用户保存 .dmg 的路径,以便我可以通过编程方式挂载它?了解用户保存文件的路径非常重要。