2010-07-31 4 views
8

기술적이지 않은 다양한 최종 사용자에게 배포해야하는 작업중인 JNLP 응용 프로그램이 있습니다.Launch4J와 Java Web Start의 조합은 무엇입니까?

사용자의 컴퓨터에 최신 JVM이 설치되어 있으면 모든 것이 정상입니다. 그들은 JNLP 파일을 두 번 클릭하기 만하면 Java Web Start가 나머지 작업을 수행합니다.

이제 JVM의 유무에 관계없이 작동하는 것을 배포하고 싶습니다. 존재하지 않는 경우 호환되는 JVM을 자동으로 다운로드하는 .exe 파일이있는 경우 javaws.exe을 호출하여 .jar 파일을 다운로드하고 응용 프로그램을 시작하십시오.

Launch4J는 내가 찾은 것과 가장 비슷하지만 javaws.exe을 통해 프로그램을 시작할 수 없습니다. .jnlp 파일을 구문 분석

  • 을 사전에 설치하는 JVM을 필요로하지 않습니다

    • 는 자체 포함 .exe 파일을 생성 : 유일한 옵션은 내가 할 수있는 제품을 원하는

      javajavaw 있습니다 필요할 경우 다운로드 할 올바른 JVM을 결정하십시오 (Java Web Start는 필요한 경우 JVM을 다운로드 할 수 있지만 두 가지를 다운로드하지 않아도됩니다. 먼저 Java Web Start를 부트 스트랩하고 두 번째로 응용 프로그램을 실행해야합니다. 특정이지만 다른 JVM입니다.)

    • JVM을 자동으로 다운로드하여 설치하면 이 아닌이 아니라 사용자를 Java 다운로드 페이지로 안내하거나 새 설치 마법사를 열 수 있습니다.
    • 필요한 경우 관리자 암호를 요구합니다 (JVM을 설치할 수있는 권한으로 Sun JVM 설치 프로그램에 내장되어 있지 않습니다.)
    • 보안 대화 상자를 하나만 표시합니다. 사용자에게 일단 그들이 생성 된 .exe을 신뢰하는지 확인하기 위해 두 번째 프롬프트에서 동일한 소스의 것이며 동일한 인증서로 서명 된 .jar 파일을 신뢰하는지 확인하지 않으려합니다.이 경우 자동 다운로더가 필요하다고 가정합니다. JWS를 시작하기 전에 인증서를 설치하십시오.)
    • (필수는 아님) 응용 프로그램 자원 (예 : .jar 파일)을 JVM과 동시에 백그라운드로 다운로드하십시오. JVM이 설치되기 전에 캐시가 실행되어야하므로 캐시는 원시 코드로 구현되어야하고 DownloadService은 나중에 JNI를 사용하여 인터페이스합니다.

    이와 같은 제품이 존재합니까? 나는 그렇지 않다고 생각하지만, 그럴만 한 가치가있다.


    업데이트 나는 그것이 오프라인 설치를 위해 설계 나는 온라인 설치에 주로 걱정하고 있지만, 일부 관련 문제에 대한 해결책을 가지고 this article을 발견했다.

  • 답변

    2

    동일한 문제가 발생했습니다. 결국 BAT, Shell, 결국 Mac 용 DMG로 끝났습니다.

    나는 윈도우 사용 널 소프트 설치에 대한 automaded JRE 설치에이 댓글을 발견 :

    http://nsis.sourceforge.net/Java_Launcher_with_automatic_JRE_installation

    나는 외부 JNLP 당신이 모든 플랫폼의 자동화를 구하기 힘든 찾을 것이라 생각합니다. 그러나 2 년 동안 내 프로젝트에서 사용자가 스스로 자바를 가져야한다는 불만을 보지 못했습니다. 나는 대부분의 기계가 이미 그것을 가질 것이라고 믿는다. Windows 사용자는 바로 가기가 없다는 것에 대해 불평하지만 vbs를 사용하면 쉽게 할 수 있습니다.

    또한 Mac DMG AppBundle에서 JRE를 지정하는 방법입니다. 구형 PowerPC 기반 시스템이 아니라면 Mac은 최신 버전을 갖습니다. 이 경우에는 Java6이 없습니다.

    여러 런처로 끝나면 자동 업데이트 전략을 사용하는 것이 좋습니다.

    +0

    비 윈도우 플랫폼에 대해 그렇게 걱정하지 않습니다. Mac에는 항상 JVM이 설치되어 있으며 대부분의 리눅스 사용자는 필요한 경우'.jar' 파일을 찾아 두 번 클릭하는 기술적 지식을 가지고 있다고 가정합니다. – finnw

    0

    또 다른 방법은 자동 설치를 유발하는/S 스위치와 함께 호출하는 .BAT 파일과 함께 Sun JRE를 배포하는 것입니다.

    javaw를 호출하는 것과 완전히 다른 자동 설치를 허용하는 다른 것을 보지 못했습니다.

    0

    좋아, 내가하고 싶은 것을 얻지 만 javaw를 사용하지 않는 이유는 무엇입니까? Launch4J는 jar 파일을 매끄럽게 사용할 수 있기 때문에 Java를 설치하는 대신 좋은 옵션처럼 보입니다.

    javaws는 보안 권한과 일부 실행 옵션이있는 java.exe를 사용합니다. 그러나 사용자가 신뢰하는 인증서를 사용하면 보안 사용 권한을 사용할 수 없게 될 수 있습니다.

    또한 javaws가 도입되었을 때 확신 할 수 없지만 EOL에 가까운 Java 1.5에서 사용할 수 있다고 확신합니다. 따라서 사용자가 Java를 설치하지 않은 이상 jnlp를 시작하는 것이 문제가 될 수 있습니다. 이전 버전을 실행 중이더라도 jnlp에 필요한 Java 버전을 추가 할 수 있으며 해당 응용 프로그램에 대해서만 자동으로 다운로드됩니다.

    +0

    javaws를 사용하고 싶습니다. 문제가되는 경우는 Java를 전혀 설치하지 않은 PC입니다. – finnw

    +0

    javaws는 Java가 이미 설치된 경우에만 작동합니다. –

    2

    Excelsior JET로 프로젝트를 컴파일하는 것도 고려해 볼 수 있습니다. 다른 모든 것 외에도 합리적인 크기의 자체 배포가 가능합니다.

    3

    나는 이것을 할 수있다. & 프로덕션에서 사용한다.

    간단한 부트 스트랩 클래스, jar it 및 Launch4j를 jar로 작성하십시오.

    여기에 간단한 부트 스트랩 클래스의 주요이다 :

    public static void main(String[] args) { 
        try {  
        final File jnlp = File.createTempFile("temp", ".jnlp"); 
        final URL url = new URL("http://yourjnlp-wherever-youre-hostingit.jnlp"); 
        yourCopyStreamMethodYouWrote(url.openStream(),new FileOutputStream(jnlp)); 
        Desktop.getDesktop().open(jnlp); 
        } catch (final Throwable t) { 
        // do something useful here 
        } 
    } 
    
    +0

    이 소리는 올바른 방법입니다. launch4j는 JVM이 있는지 확인합니다 (자동 설치가 가능한지, 아니면 자동으로 설치되는지는 모르지만). 코드를 호출합니다. 그런 다음 코드는 브라우저에 JNLP 스크립트를 시작하도록 지시합니다. –

    +0

    이것은 영리한 일이지만이 클래스와 Java Web Start 응용 프로그램 모두에 대해 두 개의 잔털 화면 (보안 경고, "실행 하시겠습니까?")을 표시하지 않습니까? – Joel

    0

    비록 비상업적 인 용도 무료로하지, Install4j는 Java 응용 프로그램의 기본 설치 시스템을 제공합니다. JRE 번들이 지원됩니다. 자동으로 JNLP를 파싱 할 수 있는지 확신 할 수 없지만 체크 아웃 할만한 가치가있을 수 있습니다.

    예제 사용 사례로 Java 기반 Integrated Genome Browser은이 도구로 생성 된 설치 프로그램과 함께 배포됩니다. install4j configuration file을 참조하십시오.

    관련 문제