Dot-Net

.NET Winforms 應用程序是否有自動升級的標準方法?

  • January 16, 2014

如果你有一個安裝在大量機器上的 Winforms 應用程序,是否有實現自動升級功能的標準方法?

例如,每次啟動時,它都會檢查一個網站或網路服務,如果有可用的新版本,它會下載並安裝它嗎?

我可以弄清楚如何推出我自己的版本,但我想知道是否已經有任何框架可以幫助解決這個問題。

在 ClickOnce 答案上 +1,但我也想對此發表一些評論:

通常,當有人第一次開始查看 ClickOnce 時,他們會發現它為他們的應用程序允許執行的操作添加了許多新限制。他們幾乎總是至少違反其中一項並回來聲明 ClickOnce 對他們不起作用,因為 x、y 和 z 將不再起作用。

預計會再次出現這種情況,我想花點時間解釋這些限制的基本原理,以及為什麼您可能想仔細研究應用程序的執行方式,而不是編寫自己的更新系統或使用替代方案.

這裡的關鍵是查看 ClickOnce 應用程序的主要案例。該案例主要是企業工作站,您希望在其中部署真正的 winforms 業務線應用程序,該應用程序應始終保持最新狀態,但在任何情況下,使用者都不應擁有對自己機器的管理員訪問權限。由於您談論的是“安裝在大量機器上的應用程序”,我認為您很可能屬於該類別。

看看這個案例,最後一點尤其是殺手。最後,對 ClickOnce 應用程序的大多數小限制都需要以下條件之一:

  1. 執行時的管理員訪問,即使是短暫的
  2. 更新時的管理員訪問權限

有時,您需要該訪問權限或為什麼需要該訪問權限並不明顯,但最終這通常是歸結為的。想要向系統註冊 dll 或更新 Program Files 文件夾中的文件?預設情況下,這需要管理員訪問權限。需要安裝或更新 Windows 服務?管理員訪問。想要為第三方組件執行 msi 安裝程序?您需要管理員權限才能執行 msi。想監聽 tcp 埠?你明白了。

**最後,您的目標是讓即使只有標準權限的使用者仍然能夠自動更新您的應用程序……甚至是透明的。**否則,您需要額外的 IT 人員參與每個部署。即使您的程序是面向廣大公眾的,這也是一個好主意;它將幫助您避免某種類型的支持問題。使用替代部署系統不會改變這一點。這些系統通常只針對大多數使用者以管理員身份執行的消費類機器,因此對這些問題的關注度較低。

引用自:https://stackoverflow.com/questions/1743650