繁体   English   中英

在Java中检测应用程序的安装路径?

[英]Detecting your application's install path in Java?

我已经用Java开发了一个小型应用程序,我想使用Nullsoft可编写脚本的安装系统( http://nsis.sourceforge.net/Main_Page )为其创建Windows安装程序。

我制作的应用程序需要将用户首选项保存在某个位置,并且当前将其保存在用户的主目录中(例如c:\\ Users \\ danny或/ home / users / danny)。 但是,如果Windows安装程序将应用程序安装到例如c:\\ Program Files \\ whatever \\,我可能也应该将首选项文件保存在那里,对吗?

如何在Java中检测该目录路径? 在不失去Windows卸载程序对Windows用户的好处(例如开始菜单图标,安装程序选项等)的情况下,什么是跨平台的好方法?

我是否应该继续在用户的本地路径中保存我的首选项并使其混乱?

非常感谢,

保存用户首选项的最佳位置是用户主目录。 从安全性的角度来看也很好。

要从java获取路径:

System.getProperty("user.home");

它是跨平台的。 (Linux中的/ home /用户名(或取决于操作系统的配置)在Windows中为C:\\ Documents and Seetings \\ username)

更多属性: http : //www.mindspring.com/~mgrand/java-system-properties.htm

另外,请确保您的应用具有足够的特权(对于applet,应对其进行签名)

我会坚持使用用户的主目录来保存首选项。

另外,您可以使用Preferences API

使用首选项API,您可以存储应用程序和用户首选项。 缺点是该实现控制着这些文件的存储位置。 默认情况下,在Windows中,它使用注册表。

import java.util.prefs.Preferences;

// System node
Preferences systemPrefs = Preferences.systemNodeForPackage(YourClass.class);
// User node
Preferences userPrefs = Preferences.userNodeForPackage(YourClass.class);

systemPrefs.put("My Preference", "A string");
String myPreference = systemPrefs.get("My Preference");
userPrefs.putInt("A number", 1);
int aNumber = userPrefs.getInt("A number");

但是,如果Windows安装程序将应用程序安装到例如c:\\ Program Files \\ whatever \\,我可能也应该将首选项文件保存在那里,对吗?

不,您绝对不应该。 计算机可以有多个用户,并且普通用户帐户没有对程序安装目录的写访问权限。 短视的程序员在假设计算机只有一个用户才能执行所有代码的情况下编写代码,这就是为什么这么多糟糕的应用程序使得无法在适当的安全配置下运行Windows XP并要求Vista和Windows 7进行奇怪的解决方法的原因。

用户的主目录恰好是首选项文件的正确位置-这样一来,它们也将被备份(没人要备份程序二进制文件)。 另外,考虑使用Java首选项API,而不是浪费时间实现自己的方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM