2012-09-11 40 views
0

我將自動更新功能添加到現有應用程序(通過exe4j啓動的Java)。一切工作正常的管理員,但非管理員將不具有寫入權限的安裝目錄(c:\program files\myApp)。在Windows中安裝自動更新應用程序的正確方法是什麼?

所有我拿出解決方案,感覺有點邪,所以我認爲我會問這裏。這是到目前爲止,我有過的想法:

  • 授予每個人都寫在我的程序的安裝目錄(如c:\program files\myApp\bin)訪問子目錄。
  • 只安裝一個小的boostrap程序文件,並安裝其餘的用戶的家(也許在AppData下)。這意味着每個用戶都會擁有大部分應用程序的重複副本。
  • 在用戶的主目錄

什麼是處理這個最正確的/最邪惡的方式安裝整個應用程序?

回答

0

我認爲最好的辦法就是在%來安裝你的應用程序USERPROFILE%\應用程序數據\本地

如果你的應用不是非常大,這是你最好的選擇。例如,這是Google Chrome的工作方式。

0

所有的想法都有一個安全問題:任何人都可以輕鬆地更改程序文件。谷歌瀏覽器具有相同的安全問題:惡意軟件修改其文件要容易得多。

我絕對不會建議改變C:\Program Files\myApp\bin的默認權限。

如果您想防止重複,您可以使用C:\ProgramData,但它的權限不太嚴格,如Program Files,但具有相同的安全風險。

所以,如果你關心用戶的安全,你應該安裝應用程序到Program Files。因此,您可以在無意中修改文件的系統保護。

你更新應用程序寫入新文件Program Files之前提升。缺點是用戶必須在UAC提示中點擊繼續按鈕。如果更新很少,那麼這是最簡單的方法。 Mozilla Firefox曾經使用這種方法:瀏覽器下載了更新,在下次啓動時顯示UAC確認並將更新的文件寫入Program Files

最近Firefox更改了更新體驗。他們安裝處理更新的服務。這樣用戶不會對UAC確認感到困擾,所有事情都會對他們透明。他們啓動Firefox,如果有更新,服務啓動,因爲服務以系統權限運行,它具有對Program Files的寫入權限,文件被更新,然後更新Firefox啓動,服務關閉(直到下一個更新)。

我更喜歡Firefox的方法:它的文件受到文件系統權限無意修改的保護。同時,現在它默默地更新;在他們實施更新服務之前,我並不介意在三個月內一次在UAC提示中按繼續

相關問題