2010-04-19 120 views
1

我已經在Java中創建了一個小應用程序,並且我想使用Nullsoft腳本安裝系統(http://nsis.sourceforge.net/Main_Page)爲它創建一個Windows安裝程序。在Java中檢測您的應用程序的安裝路徑?

我所做的應用程序需要將用戶首選項保存在某處,並且它當前將其保存在用戶的主目錄(例如c:\ Users \ danny或/ home/users/danny)中。然而,如果Windows安裝程序將應用程序安裝到例如ç:\程序文件\無論\我應該保存偏好文件在那裏,對吧?

如何檢測Java中的目錄路徑?對於Windows用戶來說,什麼是一個很好的跨平臺方法而不會失去Windows卸載程序的好處。開始菜單圖標,安裝程序選項等?

我是否應該繼續將我的偏好保存在用戶的家庭路徑中並使其混亂?

非常感謝,

回答

4

保存用戶偏好的最佳位置是用戶主目錄。 從安全的角度來看也是很好的。

從Java獲取路徑:

System.getProperty("user.home"); 

它是跨平臺的。 (/家/用戶名在Linux中(或類似這樣的依賴於OS配置)C:\ Documents和在Windows Seetings \用戶名)

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

此外,請確保您的應用程序有足夠的權限(對於小程序,它應該被簽名)

+1

謝謝,我現在應該使用System.getProperty(「的user.home」)然而,使用這種人也應該應該使用System.getProperty(「文件分割符」)作爲UNIX使用「/」和窗口「\」分隔文件在路徑中。例如。 String path = System.getProperty(「user.home」)+ System.getProperty(file.separator「)+」whatever.png「; – 2010-04-19 20:09:57

+0

此外,你可以做以下 新文件(新文件(System.getProperty(」user .home「),」whatever.png「); 像這樣的無聊 很高興知道它有助於某人 – zaletniy 2010-04-19 20:35:35

2

但是,如果Windows安裝程序 將應用程序安裝到例如 c:\ Program Files \無論\我應該 大概保存偏好文件 那裏,對吧?

不,你絕對不應該這樣做。計算機可以有多個用戶,並且一個普通的用戶帳戶不具有對程序安裝目錄的寫入權限。編寫代碼的目光短淺的程序員假設計算機只有一個用戶可以完成所有工作,這就是爲什麼有這麼多蹩腳的應用程序使得無法在正確的安全配置下運行Windows XP並要求Vista和Windows 7執行奇怪的變通方法。

用戶的主目錄是,確切地說是首選文件的正確位置 - 這樣它們也會被備份(沒有人想備份程序二進制文件)。此外,請考慮使用Java preferences API,而不是浪費時間實施自己的方案。

+0

好點,謝謝! – 2010-04-19 20:11:24

3

我會堅持用戶的主目錄保存偏好。

或者,您可以使用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"); 
相關問題