簡體   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