2012-02-28 65 views

回答

2

您需要能够从浏览器运行新的进程。有几种方法可以做到这一点。我将展示JNLP的方式来做到这一点。

创建一个JNLP文件如下:

<?xml version="1.0" encoding="utf-8"?> 
<jnlp spec="1.0+" codebase="http://example/" href="jnlpTest.jnlp"> 
    <information> 
     <title>Some Title</title> 
     <vendor>Some Vendor</vendor> 
     <homepage href="http://example/" /> 
     <description>Some Description</description> 
    </information> 
    <security> 
     <all-permissions/> 
    </security> 
    <resources> 
     <j2se version="1.6+" /> 
     <jar href="jnlpTest.jar" /> 
    </resources> 
    <application-desc main-class="MainClass" /> 
</jnlp> 

从下面创建一个jnlpTest.jar:

public class MainClass { 
    public static void main(String args[]) { 
     Runtime rt = Runtime.getRuntime(); 
     try { 
      //TODO - different exec for Mac 
      rt.exec("explorer.exe"); 
     } catch (IOException e) { 
      //exception 
     } 

    } 
} 

:与清单:

Manifest-Version: 1.0 
Main-Class: MainClass 

登录您的JNLP罐子:

keytool -genkey -keystore testKeys -alias jdc 
jarsigner -keystore testKeys jnlpTest.jar jdc 

将jar和jnlp文件放在Web服务器上。确保MIME类型JNLP的服务为application/x-java-jnlp-file

参考用于制造JNLP:现在http://java.dzone.com/articles/java-web-start-jnlp-hello

当用户点击您的JNLP链接就会下载JAR和询问是否它是确定运行。运行它将导致浏览器窗口打开。我知道这不是最好的解决方案,但任何解决方案都需要询问用户在他们的机器上执行代码的权限。

+0

这东西模糊真的应该是一个评论,不是答案。如果Silverlight的Mac端口包含COM,我也会非常惊讶。 – millimoose 2012-02-28 16:16:10

+0

我开始在评论中提到这一点,但我确实想要添加更多信息,而不仅仅是“尝试此网址”。这是一个起点,如果有帮助的话,如果不是不理我的答案。 – 2012-02-28 16:18:45

+0

@DMoses链接的文章在开头说:“应该指出的是,这些功能只能在提升的权限外浏览器模式下使用,并且不能在浏览器中使用。”你是否完全与这个问题有关? – 2012-02-28 16:19:15

2

对于node-webkitNW.js),可以使用用户...

var gui = require("nw.gui"); 

document.querySelector("[data-location]").onclick = function() { 
    gui.Shell.showItemInFolder(__dirname + '/content/project/' + this.textContent); 
}; 
相关问题