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作為主輸出,生成就可以了。最終像這樣下面圖,太晚了,先寫到這,后續可以的話再更新。