我使用MyApp.app
创建了一个Mac应用Jar Bundler
。因为我有一个外部jar,lib/AutoUpdate.jar
与MyApp.app
位于同一文件夹路径中,所以我需要MyApp.app
的当前路径才能运行自动更新。
显然:
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 :(得分: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;