2014-09-11 73 views
1

我有一個java應用程序,我已經做了一個安裝程序。在代碼中,我需要知道用戶安裝應用程序的位置,因爲用戶需要將應用程序安裝到他最喜歡的目錄中。那麼如何使用java代碼來獲取這些信息呢?我需要它特定於Windows平臺。使用Java在Windows上查找應用程序的安裝目錄

+1

(至少)兩種可能你閱讀一些時刻的文件,在未來,從任何地方。將位置(從您的安裝程序)寫入已知位置(可能位於'user.home'中)或使用'new File(「。」)'或'user.dir'來獲取對當前目錄的引用 – MadProgrammer 2014-09-11 05:37:27

+0

這使我用戶的主目錄,C:\ users \ abc。我想獲取應用程序目錄,例如C:\ Program Files \ MyApplication。 MyApplication取決於用戶的選擇,他也可以使用不同的驅動器。 – Safeer 2014-09-11 05:43:30

+0

在安裝程序的過程中將安裝位置寫入install.property文件,以及何時只需讀取文件即可。 – CharlesX 2014-09-11 05:43:49

回答

0

很難找出應用程序的安裝位置,因爲它是由用戶決定的。因此,獲取應用程序安裝目錄的一種方法是在Windows機器上使用環境變量。當你創建安裝程序時,設置一個環境變量(你可以創建一個名爲「XYZ」變量的新變量,或者也可以用於現有變量),並將其值設置爲應用程序目錄(因爲你沒有提到你正在使用的安裝程序所以我無法告訴你如何爲你的應用程序構建安裝程序)。一旦你完成了這些,你可以在java代碼中獲得這個環境變量的值,這會給你你的應用程序的安裝目錄。這裏是獲得的環境變量XYZ的值代碼:

System.getenv("XYZ"); 
+0

如何在安裝時創建此env var?以及我將如何給它的安裝路徑? – Safeer 2014-09-11 05:49:40

+0

這取決於您使用的安裝程序。在安裝過程中尋找創建環境變量的選項。並將其設置爲安裝程序必須提供的應用程序目錄或路徑的值 – Zohaib 2014-09-11 05:53:59

+0

ok我有一個選項可以在安裝程序中創建環境變量。但是沒有創建任何變量,我已經檢查過。任何想法? – Safeer 2014-09-11 06:10:53

0

你可以使用System.getProperty("user.dir")這將給你的程序當前的工作目錄,但是這可能不是安裝目錄。

相反,從您的安裝,文件寫入到System.getProperty("user.home")位置(稱之爲像.MyApplicationConfig,使其隱藏的文件,或者把它放在{user.home}\AppData\Local目錄內),其中包含由用戶選擇安裝位置。

這將使因爲它是存儲在一箇中央,已知位置

+0

{user.home} \ AppData \ Local 是否足夠安全以保存我的應用程序使用的資源的路徑? 我的意思是如果這被刪除某種方式?你知道用戶;) – Safeer 2014-09-11 06:07:16

+0

是............? – MadProgrammer 2014-09-11 06:07:57

+0

在這種情況下,我將無法訪問資源路徑。對? – Safeer 2014-09-11 06:08:55

相關問題