因本人工做須要,在一名很是很是好的老師的指導下,入門了C#,再次向老師表示感謝。服務器
本人平時常常遇到的業務就是將數據下發給各部門,並讓各部門再上報,此過程當中常常會遇到數據格式不正確,數據錯誤等諸多問題。因而我就想到寫一個數據上報系統,來規範他們的數據。但又因知識水平有限,暫時寫不了MVC等網頁程序,所以就作了個B/S版的WINFORM應用,但又不想每次更新後給他們每一個人發客戶端或者本身寫代碼架設服務器實現自動更新(由於本人較懶,使用了微軟的ClickOnce,以爲很方便,因此就沒學習本身寫更新程序這部份內容,等之後了再學吧)。現建立一個簡單的DEMO,但願你們能夠一塊兒交流學習。文中有部分概念性的東西是引用的。網絡
ClickOnce 部署使您能夠將基於 Windows 的應用程序發佈到 Web 服務器或網絡文件共享以簡化安裝。Visual Studio 對經過 ClickOnce 部署的應用程序的發佈和更新提供徹底支持。ClickOnce 部署可用於使用 Visual Basic、Visual C# 和 Visual J# 建立的項目,但不能用於使用 Visual C++ 建立的項目。ide
使用ClickOnce發佈Windows應用程序可使用戶方便地更新應用程序,能夠起到B/S的效果,當程序更新了沒必要每個用戶從新安裝更新。程序發佈者只須要把新版本放到服務器,程序使用者在啓動軟件或退出軟件時便可更新軟件(更詳細參看圖解發布過程)。學習
固然,要使安裝過程更可視化、在安裝過程加入更多操做則應該本身製做安裝程序。字體
首先,配置好IIS,以下圖所示:網站
接着,選擇要發佈的項目,右點擊選擇「屬性」,而後選擇「發佈」選項頁,以下圖所示:插件
第一次使用ClickOnce這個功能,建議使用「發佈嚮導」,「瀏覽」,選擇剛纔配置IIS時候的目錄,以下圖所示:3d
下一步:此處要注意,必須用管理員帳戶運行VS才能獲取IIS的網址,不然會提示你用管理員賬戶從新運行。管理員運行VS後,選擇剛纔配置的IIS網站,以下圖所示:blog
接下來,根據你程序的須要,選擇是否須要脫機運行,我選擇的是不容許,這裏的區別就是若是容許,他們從網站運行一次就會將程序集所有下載到本地,之後不用經過網站也能運行,這樣可能會出現,你服務器上的已經更新到5.0了,而他們還依然使用着2.0的版本。因此我設置的是隻能經過聯機使用。以下圖所示:部署
點擊完成後,若是不出意外,最簡單的佈置就完成了,會直接跳轉到配置好的IIS網頁,以下圖所示:
點擊「運行」,會自動將程序下載並執行,以下圖:
點擊運行後會進入到程序,以下圖所示:
接下來,咱們試着更改一下程序的內容,再發布一次,看看效果,將「hello world」改成"hello my friends!",並將字體顏色更改成橙色,而後再進行到程序的發佈界面,點擊」當即發佈「,版本編號會自動進行更新,由1.0.0.1變動成了1.0.0.2,前面的1.0.0.1指的是這次發佈後程序的版本,後面的1.0.0.2指的是程序下一次發佈後的版本號,以下圖:
發佈後,VS會自動進入新的網站,以下圖所示:
能夠看到,當前發佈後的版本是1.0.0.1,點擊運行程序後,效果以下圖:
以上就實現了經過微軟給咱們提供的ClickOnce來實現自動更新的基本功能。接下來,我把使用過程當中的問題也總結一下:
1.程序發佈後,點擊運行有可能會出現,沒有運行按鈕(我這裏的圖有」運行「按鈕,此處win 7 和 win 10 界面不一致,你們遇到了根據狀況能夠試一下這個方法),錯誤提示界面以下圖:
此時須要在註冊表裏面添加以下內容,便可解決此問題:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Security]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Security\Policy]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Security\Policy\Extensions]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Security\Policy\Extensions\NamedPermissionSets]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Security\Policy\Extensions\NamedPermissionSets\Internet]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Security\Policy\Extensions\NamedPermissionSets\Internet\MediaPermission]
"Xml"="<IPermission class=\"System.Security.Permissions.MediaPermission, WindowsBase, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" version=\"1\" Audio=\"SafeAudio\" Video=\"SafeVideo\" Image=\"SafeImage\"/>"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Security\Policy\Extensions\NamedPermissionSets\Internet\WebBrowserPermission]
"Xml"="<IPermission class=\"System.Security.Permissions.WebBrowserPermission, WindowsBase, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" version=\"1\" Level=\"Safe\"/>"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Security\Policy\Extensions\NamedPermissionSets\LocalIntranet]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Security\Policy\Extensions\NamedPermissionSets\LocalIntranet\MediaPermission]
"Xml"="<IPermission class=\"System.Security.Permissions.MediaPermission, WindowsBase, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" version=\"1\" Audio=\"SafeAudio\" Video=\"SafeVideo\" Image=\"SafeImage\"/>"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Security\Policy\Extensions\NamedPermissionSets\LocalIntranet\WebBrowserPermission]
"Xml"="<IPermission class=\"System.Security.Permissions.WebBrowserPermission, WindowsBase, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\" version=\"1\" Level=\"Safe\"/>"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Security\TrustManager]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Security\TrustManager\PromptingLevel]
"MyComputer"="Enabled"
"LocalIntranet"="Enabled"
"Internet"="Enabled"
"TrustedSites"="Enabled"
"UntrustedSites"="Disabled"
2.若是你的程序集中有插件或者引用文件的話,要在【應用程序文件中添加】,以下圖:
在上面這個界面中將所需的文件發佈狀態改成」包括「,
在上面這個界面中將所需的文件複製到輸出目錄改成」始終複製「,這樣就能保證你的DLL或者一些引用文件能隨着你的程序發佈出去,不然雖然能發佈成功,但程序沒法正常運行。
以上就是我目前使用過程當中的一些心得, CliceOnce的功能遠比我說的要強大的多,我只是用了一些基礎的功能,有可能以上內容中有很多錯誤,還請你們多多批評指正,謝謝。