2012-02-28 12 views

Trả lời

2

Bạn cần có thể chạy một quy trình mới từ trình duyệt. Có một số cách để làm điều này. Tôi sẽ chỉ cách JNLP để làm điều này.

Tạo một file jnlp như sau:

<?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> 

Tạo một jnlpTest.jar sau:

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 
     } 

    } 
} 

Với Manifest:

Manifest-Version: 1.0 
Main-Class: MainClass 

Đăng jar JNLP của bạn:

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

đặt cả tệp jar và jnlp trên máy chủ web. Đảm bảo JNLP loại mime được phân phát dưới dạng application/x-java-jnlp-file.

tham khảo để thực hiện một JNLP: http://java.dzone.com/articles/java-web-start-jnlp-hello

Bây giờ khi người dùng nhấp liên kết jnlp của bạn họ sẽ tải về jar và được yêu cầu nếu nó là ok để chạy. Chạy nó sẽ làm cho cửa sổ thám hiểm mở ra. Tôi biết đó không phải là giải pháp tốt nhất, nhưng mọi giải pháp sẽ yêu cầu người dùng cho phép thực thi mã trên máy của họ.

+0

Something mơ hồ này thực sự phải là một bình luận, không phải là một câu trả lời. Tôi cũng sẽ rất ngạc nhiên nếu cổng Mac của Silverlight bao gồm COM. – millimoose

+0

Tôi bắt đầu đưa điều này vào một bình luận, nhưng tôi muốn thêm một ít thông tin hơn là chỉ "thử địa chỉ này". Đây là một điểm khởi đầu nếu điều đó giúp, nếu không bỏ qua câu trả lời của tôi. –

+0

@DMoses Bài viết được liên kết nói ở phần đầu: "Cần lưu ý rằng các tính năng này chỉ có sẵn ở chế độ ưu tiên cao hơn Chế độ ngoài trình duyệt và không có sẵn trong trình duyệt." Bạn có hoàn toàn liên quan đến câu hỏi này không? –

2

Đối node-webkit (NW.js) người dùng có thể sử dụng ...

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

document.querySelector("[data-location]").onclick = function() { 
    gui.Shell.showItemInFolder(__dirname + '/content/project/' + this.textContent); 
}; 
Các vấn đề liên quan