2013-06-30 1 views
0

MyApp.appJar Bundler이라는 Mac 응용 프로그램을 만들었습니다. 외부 용기 (lib/AutoUpdate.jar)가 MyApp.app과 동일한 폴더 경로에 있기 때문에 자동 업데이트를 실행하려면 MyApp.app의 현재 경로가 필요합니다. 명백하게 :Mac에서 Java bundler의 경로 가져 오기

System.getProperty("user.dir"); 

복용량이 작동하지 않습니다. 나는 또한 시도했다 :

String path = System.getProperty("user.dir"); 
if(path.contains("/MyApp.app")){ 
    int i = path.indexOf("/MyApp.app"); 
    path = path.substring(0,i); 
} 

그러나 이것은 또한 MyApp.app의 잘못된 경로 인 것으로 보입니다. 모든 아이디어를 올바른 경로를 얻는 방법 또는 적어도 MyApp.app을 디버그 할 수 있다면 System.out.println() 명령을 볼 수 있습니까?

+0

을 자바 데스크톱 응용 프로그램을 배포 할 경우, 최선의 선택은 응용 프로그램을 설치하는 것이 있습니다.. [Java Web Start] (http://stackoverflow.com/tags/java-web-start/info)를 사용하십시오. JWS는 Windows, OS X & * nix에서 작동합니다. –

답변

0

주어진 영역에있는 경우 해당 위치에 대해 Applications/MyApp.app을 시도하거나 Unix 명령을 사용하여 원하는 디렉토리에서 jar를 실행하고 .jar 파일에 하드 코드하지 않을 수 있습니다.

-x은 일반적으로 -d과 함께 작동하며 모두 -e 명령과 함께 작동합니다.

구현하려면 AutoUpdater.jar을 다른 .jar 파일과 함께 MyApp.app/contents/resources/java에 넣으십시오. AutoUpdater.jar은 다음과 비슷한 모습이 될 것 코드의

main() 
{ 
    if [ -x Applications/MyApp.app];then 
     cd Applications/MyApp.app/contents/resources/java 
     java AutoUpdater.jar 
     wait 86400 
     main 
    else 
     wait 3600 
    fi 
} 
main 

다음 비트 앱이 매 시간마다 존재하는지 확인을 시도하고 실행을 떠난 경우 매일 업데이트됩니다.

download() 
{ 
    cd Applications/MyApp.app/contents/resources/java 
    if ! curl -LO http://your.url.that.it.is.updating.from;then 
     echo "Failed to download" 
     wait 3600 
    else 
     wait 86400 
    fi 
} 

당신은 완전히 마지막 행하기 전에 코드에이를 추가하여 AutoUpdate.jar을 제거 할 수 있습니다. 이 교체 :

java AutoUpdater.jar 
wait 86400 

을 ...이와 함께 :

download 

이 만 JarBundler 애플리케이션을 위해 설계되었습니다. 이것을 사용하여 현재 .jar 파일을 대체해야합니다. 보조 노트로

if ! curl -LO http://cbukk.it/craftbukkit-dev.jar; 

명령 user.dir은 보통 경로로 /Users/yourName을 가져옵니다. 이은과 같이 JarBundler에서 글로벌 식별자를 사용하여 변경할 수 있습니다 :

String path = com.mycommpany.myapp;