1. 程式人生 > 其它 >C#打包輔助類Installer使用總結

C#打包輔助類Installer使用總結

VS安裝輔助類Installer使用:

1、需要新建個專案,因為後面打包時,需要作為主輸出新增到打包專案裡

2、在新建的專案裡,右鍵新增新建項,找安裝程式類,如圖:

3、新增完成後,安裝程式類,如下(建構函式裡的事件是我自己加的):

檢視Installer父類,會發現有安裝前、後事件,解除安裝(Unstall)前、後事件,以及commit和rollback事件;其中commit的commited事件就是所有安裝且解除安裝前版本後發生的,rollback肯定是無法安裝回退的事件;

自行選擇在對應的事件裡寫自己的操作就行。

4、寫完自定義操作後,還得和打包專案關聯才行,否則無法啟動這個類。這裡分兩步:

  1)、在打包專案檔案系統裡,在Application Folder資料夾下,右鍵新增主輸出,選擇新建的那個有安裝輔助類的專案,像這樣:

  

  2)、右鍵打包專案-view-自定義操作,會出來四個事件的資料夾,查閱網上的資料大多都是需要在這四個資料夾下,都新增上面新增的主輸出類庫,說是有時候如果只加了自己加操作的事件,會報錯,沒細研究。像這樣:

  

5、到這裡,安裝程式類庫就可以使用了,但有時候,安裝類需要外部傳入一些引數,類裡使用,這裡可以在上面新增的四個主輸出中,選中屬性-CustomActionData項新增引數(應該都是key-value格式的,多個用;隔開,這個沒記清),我的用如下:

上面的/targetdir="[TARGETDIR]/",類裡就可以用到targetdir鍵,裡面的值就是安裝目錄,這個[TARGETDIR]應該是系統內定的;這裡引數多樣化,也沒仔細研究,大家自行查閱吧。類裡使用像這樣:this.Context.Parameters["targetdir"]。

6、上面就是完整的安裝程式類的使用,在這裡,我記錄下使用中遇到的一個問題。場景是這樣:我在打包的目錄下,又建了個資料夾Program,把主程式相關的exe和dll都放到了Program的這個資料夾中,剛開始的時候,我把啟動的exe和安裝程式的類庫都作為主輸出放到了Program資料夾中,而且還把安裝程式類庫的輸出目錄改了(目錄這個也不知道有影響沒,但老實點還是儲存到debug下吧),這樣生成也沒報錯,正常安裝也沒問題,但如果電腦上有之前的版本,(而且老版本安裝目錄和新版本安裝目錄也不一致,這點我不知道有沒有影響),這時候,安裝就會報錯,安裝快結束了,會提示找不到檔案(Library.InstallState)這個類似的檔案。最後解決我是把library輸出目錄改回原始debug,在Program同級目錄下,把library作為主輸出,生成就可以了。最終像這樣下面圖,太晚了,先寫到這,後續可以的話再更新。