C# WinFrom打包不怎么常用,但一年總有那么一兩次,每次都記不全,為了方便自己回看,於是有了本篇文章。
本例使用《C#工具類LogHelper》的解決方案作為例子,實現WinForm打包,以及升級的功能,本文使用VisualStudio2017工具。
一、在解決方案--添加--新建項目,選擇其它項目類型--Visual Studio Installer,選擇Setup Project。

點擊確定后如下圖所示,會安裝一個Setup1的安裝程序配置項目。

如果沒有找到“Visual Studio Installer”,可到 VS 工具欄 > 工具 > 擴展和更新 > 聯機 > 搜索 Microsoft Visual Studio Installer Projects 並安裝。安裝完成后需要重啟 VS。

二、設置軟件圖標。
到https://www.easyicon.net/隨便搜索一個ico后綴的圖標,並放到項目的Icon文件夾下。

為主窗體添加圖標:

三、設置導入內容
1、點擊Application Folder ->Add -> 文件。

2、選擇項目bin Debug文件夾,Ctrl+A 全選所有內容,之后點擊"打開"。


3、如果有文件夾,需在 Application Folder ->Add-> Folder中添加。本項目有Log文件夾和Icon,所以在 Application Folder 需要添加Log文件夾和Icon文件夾,如下圖所示。

添加Log文件夾和Icon文件夾后:



四、設置輸出內容
1、選擇在Application Folder-->Add-> 項目輸出 。
2、點擊確定。

3、在"主輸出from xxx",右鍵--Create Shortcut to 主輸出 from xxx


4、將"Shortcut to 主輸出 from xxx"拖動到 User's Desktop。


將 User's Desktop的"Shortcut to 主輸出 from xxx"自定義名稱,此處我改為WinFormDemo,並設置圖標。


五、設置卸載項
1、點擊Application Folder ->Add -> 文件,選擇“C:\Windows\System32” 中的 msiexec.exe。

2、將msiexec.exe 創建一個快捷方式,並改名為 Uninstall 。


3、創建好Uninstall 快捷方式后,點擊SetUp的屬性,復制ProductCode中的內容。

4、 將復制好的ProductCode 內容,粘貼到創建好的Uninstall的屬性Arguments中,並在ProductCode 前加入“/X”

5、總的來講就是將“主輸出from xxx”和msiexece.exe創建快捷方式,並分別重命名后,拖動到 User's Programs Menu。這個的作用就是在用戶程序菜單顯示程序的進入快捷方式和卸載快捷方式。


創建文件夾WinFormDemo,並將兩個Shortcut移到文件夾里,如下圖所示。

六、設置版本覆蓋。

七、生成
在Setup1右鍵,生成。

生成后,在Setup1的項目的Debug下就有安裝文件的exe了。

八、效果
安裝后效果如下:


九、升級
1、在AssemblyInfo.cs設置新版本號。

2、將Setup1屬性里的Version同步更改,會提示會改會ProductCode,點擊“是”即可。

注:這里Version的版本號只有3位,如果設為1.0.0.1,則在發布時顯示此錯誤“ERROR: Invalid product version '1.0.0.1'. Must be of format '##.##.####'”,若有知曉的朋友請告知。
3、修改所有Unistall的Arguments為:/X {新的ProdcutCode}

4、生新發布Setup后,安裝exe,最后效果如下:

十、下載
https://files.cnblogs.com/files/suterfo/WinFormDemo.rar
參考文章:
1、https://blog.csdn.net/u014234260/article/details/80067254
2、https://blog.csdn.net/lxrj2008/article/details/80611164
3、https://blog.csdn.net/m0_37862405/article/details/80785294
4、https://www.cnblogs.com/duanweishi/p/11114332.html
