2009-04-16 99 views
0

我知道有很多關於如何在.NET應用程序中實現自動更新的問題,而且我可能已經閱讀了其中的大部分內容。不幸的是,據我所知,沒有人看到我的情況非常合適。在沒有管理員權限的情況下在Vista中自動更新我的.NET應用程序

我試圖建立,將在有限的用戶帳戶的環境中運行自更新.NET應用程序。這裏沒有管理員權限。該應用程序必須在Vista和XP上運行,並可能在Win 7出現時運行。 X-copy部署會很好。我寧願不使用點擊一次

到目前爲止,我已經嘗試了應用程序檢查清單和下載更新的二進制文件,這是安裝應用程序時,開發偉大的工作,但沒有這麼多的系統。 Vista拒絕讓我將文件複製到Program Files。之後,我試着下載一個更新的.msi,除了MSI有一個UAC提示符之外,它工作正常 - 如果用戶沒有具有本地管理員權限的帳戶,則不會執行。

有些崗位提出,在運行應用程序數據的程序,並使用X-複製方法可能會奏效,但我還沒有看到任何人說,他們已經嘗試過了,它的工作。這將適用於沒有管理員權限的帳戶嗎?在我開始編寫更多代碼之前,任何人都可以爲此方法擔保嗎?

+1

任何原因你會迴避ClickOnce?這對於這種場景來說非常完美。 – 2009-04-16 22:19:24

回答

3

你只需要確保你「安裝」(即複製到)的非特權用戶可以訪問的位置。

沒有什麼神奇的有關程序文件只是一個非特權用戶無法寫入它(默認情況下)。

如果你有一個管理員做你的初始安裝,那麼你就可以改變你的Program Files文件夾的權限,以便隨後的升級可能會覆蓋這些文件。但這不符合事物的精神。

ClickOnce的主要缺點是不常見的安裝位置和原始安裝程序 - 如果您打算將xcopy變成奇怪的地方,那麼您已經擁有很多關於ClickOnce的內容,沒有任何優勢。

0

雖然相當複雜,但其中一種策略是創建一個作爲本地系統運行的Windows服務。以管理用戶身份安裝一次,然後讓此服務下載更新並將其複製到程序文件目錄。

您可能還需要製作某種用戶界面才能在更新過程中顯示進度和狀態。很容易通過WCF服務或類似的方式公開它。

相關問題