我寫了一個包含自更新程序的Java應用程序。自更新程序從Web服務器加載新程序版本並替換應用程序文件。儘管如果安裝應用程序,這完美地工作,例如在用戶主目錄中,如果它安裝在C:\ Program Files文件夾中,它將在Windows計算機上失敗。這是因爲JVM是在沒有對程序目錄的寫入權限的用戶帳戶下執行的。 如果一個本地程序,例如一個安裝程序會嘗試寫入程序文件夾,通常彈出窗口會要求用戶允許寫入操作。這不會發生在Java應用程序中。爲什麼?從Java程序寫入到C: Program Files
有什麼辦法可以實現將Java程序寫入受限制文件夾的操作會彈出安全彈出框,以便用戶可以允許訪問該文件夾?
感謝您的回覆。根據答案我看到如下選項:
Java Web Start的
對我來說,這不是最終用戶的選項。我認爲沒有人能期望普通的最終用戶知道什麼是Java Web Start,它有什麼好處以及如何使用它,我懷疑普通的Windows用戶是否知道如何卸載Java Web Start應用程序。使用帶有清單的exe啓動程序啓動Java應用程序
據我瞭解這個解決方案,exe啓動程序會在應用程序啓動時請求擴展執行權。這不完全是我想要的,因爲我的使用情況下,如果更新可用而不是每次應用程序啓動時,獲得擴展權限就足夠了。通過調用本機可執行文件執行更新操作
可以調用本機可執行文件來讓它執行更新操作。這樣,如果更新可用,應用程序只會請求擴展權限。這聽起來不錯,但包括一些本地編碼的Windows,並不適用於其他平臺。安裝程序文件夾中的一個發射器和在用戶家
一個應用程序可以將在調用安裝在用戶的主目錄下的應用程序文件夾中的發射器。通過這種方式,可以更新用戶主文件夾中的應用程序。 我使用InnoSetup在Windows上安裝我的應用程序,並且據我所見,使用此安裝程序很難實現拆分安裝,並且可能與其他安裝程序也可以實現拆分安裝。在用戶的主目錄中安裝完整的應用程序
由於用戶具有對其主目錄的寫入權限,因此完全沒有問題。對我來說,這看起來是最簡單的選擇。
檢查:http://stackoverflow.com/questions/4662574/how-do-i-elevate -my-uac-permissions-from-java – Xardas
在另一個問題中,你問到JWS。爲什麼不安裝這個程序。使用JWS?它提供了自動更新.. –
我是UAC,我會立即封鎖你的應用程序,並阻止它永久執行。誰保證你不會將惡意可執行文件與你看似無辜的java文件一起引入? –