0026. C# Visual Studio 佈署工具ClickOnce - 不使用Visual Studio替換佈署檔案內容與憑證的方法 - 使用SdK Mage.exe 工具

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 目前使用後都會發生憑證加密錯誤的訊息。最後就放棄了。