C# 學習筆記 - ClickOnce
在微軟Visual Studio中,軟體工程師很常使用內建的工具ClickOnce發行到自己架設的IIS上,提供使用者下載程式,進行自動更新檔案的功能。
本篇文章目的在解決此問題:在不使用(安裝)Visual Studio程式的情況下,要更新ClickOnce的檔案資料。
通常我們在IIS環境下是不會安裝Visual Studio程式,如果需要讓IIS管理者自行更新ClickOnce檔案,或者客製化的更新ClickOnce檔案
這時就會用到Mage.exe 或者MageUi.exe 這兩個工具。
===== 基本步驟 ======
1. 安裝.net FrameWork (版本不限) EX: .net FrameWork 4.0 https://www.microsoft.com/zh-tw/download/details.aspx?id=17718
2. 確認Mage.exe 位置 通常在 C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools 底下
※ .net FrameWork版本不同 就請在C:\Program Files (x86)\Microsoft SDKs\Windows\ 找到相對應的版本 ,基本上mage.exe 程式都一樣(沒深入研究)
===== 情境說明 =====
情境說明: 現在在IIS的ClickOnce程式,需要更換程式連線Server的位置,不透過Visual Studio,只用Mage.exe 完成更換連線位置的工作
以下是我們的情境圖:
1. 原始的環境佈署狀態
2. 希望改變後的 環境佈署狀態
根據以上的情境圖可以知道就是改變程式連線位置的設定檔案(前提當然是軟體工程師不是寫死的)。
以下是針對上述環境模擬的補充:
1. 瀏覽器連線ClickOnce安裝頁面 -> 進行安裝
2. 安裝完成後,如下圖程式畫面 ,在最下方有連線位置 : 192.168.8.100
※ 內容與Icon不顯示多多包涵
===== 正式開始 =====
1. 找出 IIS 上 ClickOnce的檔案
※ 使用Remote NG遠端桌面連線工具
2. 將該發行的檔案全部複製到其他位置 (這裡為了安全,不動到IIS上的ClickOnce檔案),這邊是放在 C:\Users\Administrator\Desktop\EEW2015 上
3. 我們進入 Application Files資料夾裡面,內部還有一層 "程式名稱+版號"的資料夾。 Ex:MyProgram_1_5_0_1
這邊請這資料夾底下有副檔案.deploy的檔案全部手動移除,結果應如下第二張圖:
※.deploy檔案是軟體工程師從Visual Studio 發行時選擇的封裝
4. 我們的目標是更改連線位置,所以這邊我們改變 ServerList.xml 檔案的連線位置。開啟該檔案
5. 上圖是原本的連線位置 192.168.8.100 下圖是更改後的連線位置 192.168.8.121 ,然後儲存檔案
6. 接著我們要使用命令提示字元,請記得使用管理者權限開啟。
※基本上隨便一個都可以
7. 請先執行以下指令,清除clickonce 的快取
mage -cc
8. 以下是將應用程式清單更新 (因為我們更新檔案了) ,
※ 規則如下(沒有憑證密碼的話 -password 後面都可以不用輸入):
mage -update "更新的.manifest應用程式清單位置" -certfile ".pfx憑證檔案位置" -password "憑證密碼"
實際指令如下:
mage -update "C:\Users\Administrator2\Desktop\EEW2015\Application Files\資料夾名_1_5_0_1\檔案名稱.manifest" -certfile "F:\clickoncetest\MyKey\憑證檔名.pfx" -p
assword 密碼
成功的畫面如下:
8(補充). 憑證的檔案通常如下:
9. 接著要更新ClickOnce的簽署檔案.application ,
※ 規則如下(沒有憑證密碼的話 -password 後面都可以不用輸入):
mage -update "Clickonce檔案附檔名為.application的檔案位置" -appmanifest "應用程式資訊清單" -certfile "" -password 憑證密碼
實際指令如下:
mage -update "C:\Users\Administrator2\Desktop\EEW2015\檔案名稱.applicati
on" -appmanifest "C:\Users\Administrator2\Desktop\EEW2015\Application Files\資料夾檔名_1_5_0_1
\檔案名稱.manifest" -certfile "F:\clickoncetest\MyKey\憑證檔名.pfx" -password 密碼
成功畫面如下:
10. 我們已經完成了重新加密憑證的工作,這邊需要在執行一次ClickOnce 快取清除確保正確運行
mage -cc
11. 請再將.deploy加回ClickOnce的部署資料中,如下圖:
12. 將改完的ClickOnce的檔案執行,在本地安裝確認是否正常
13. 可以發現成功的安裝,並且連結導向到192.168.8.121
14. 因為在本地正確運行,我們在將部署資料移動到IIS上,請全部覆蓋
15. 回到瀏覽器執行網頁連結,進行安裝
16. 可以發現真的可以連線到192.168.8.100 進行連線。確實是從IIS下載
17. 從IIS安裝完成的程式,也確實導向到192.168.8.121了,Mage.exe 完成我們的需求
以下是補充的參考資料:
Mage.exe MSDN的說明 https://www.google.com.tw/#q=mage.exe+
Mage.exe 是很好的工具,可以重新部署ClickOnce資料。
MageUI.exe 目前使用後都會發生憑證加密錯誤的訊息。最後就放棄了。