作為研發人員,在本機上開發的winform、wpf或者控制台程序需要發給其他人測試時候,一般需要對其進行打包生成setup安裝文件,根據網上查找的資料並結合自己打包成功,記錄如下:
注:本程序是一個利用winform實現的客戶端程序,解決方案為
第一步,右擊“解決方案XXX”->添加“新建項目”-》“其他項目類型”-》“安裝和部署”-》“安裝向導”
然后點擊下一步:
這里保持默認即可“為WIndows應用程序創建一個安裝程序”-》
選擇“主輸出來自**(項目名稱:XXX)”(注意:如果有多個項目合成一個解決方案也要選擇,就是都選擇主輸出來自XXX)——》
這里我們沒有額外附件添加,所以直接點擊下一步即可,“完成”即可。
到這里第一部分完成,接下來就是修改屬性了。
右擊解決方案中的setup,選擇“屬性”-》
第二步,點擊“系統必備”-》
單選按鈕中,選擇“從與我的應用程序相同的位置下載系統必備組件”-》確定
第三步,點擊,左邊的“應用程序文件夾”-》
從右側屬性列表中,修改屬性DefaultLocation“[ProgramFilesFolder][Manufacturer]\[ProductName]”為:[ProgramFilesFolder]\[ProductName],否則安裝路徑不允許用戶選擇。
右擊”應用程序文件夾“,點擊”添加“,點擊”文件“或(有文件夾)”文件夾”。將你的Release目錄下面的文件全部(軟件需要的文件夾、dll等)添加進來,有文件夾的需要在應用程序文件夾目錄下新建子文件夾,同時文件夾里有文件的也需要添加進去。(非常重要)
下圖為本人添加好的:
第四步,點擊“應用程序文件夾”,右擊右邊的“主輸出來自XXX(..”創建其快捷方式(快捷方式可以改名)(注意:這里的主輸出是指最終在你release版本中,程序能夠產生exe運行文件的主輸出)-》
將快捷方式拖拽到“用戶的程序菜單”和“用戶桌面”,這樣安裝完成后,就會在桌面和用戶的程序菜單創建相應的圖標。
第五步,創建卸載程序。右擊”應用程序文件夾“,點擊”添加“,選擇”文件“,然后將"C:\Windows\System32" 下面的”msiexec.exe“(這個msiexec.exe文件最好選擇Win7系統下的,這樣可以兼容Win10系統)文件給添加進來,如果找不到,你可以直接搜。當然,你也可以再給msiexec.exe創建一個快捷方式命名為”UnInstall“。
命名了快捷方式之后,將Setup屬性(點擊解決方案里面的setup彈出屬性)ProductCode拷貝到Uninstall屬性的Arguments里面:
同時在前頭加上 ”/X “,注意:x后面有一個空格。
第六步,添加程序圖標,右鍵點擊“用戶桌面”中的快捷方式,然后再其屬性中找到,Icon屬性,瀏覽選取你所要添加的圖標,記住,應該先將圖標放在打包的文件夾或應用程序文件夾中,要不然無法進行指定。
第七步,右擊setup項目名稱,選擇“生成”,然后到,生成的目錄下拷貝出setup.exe即可安裝。
進行到第七步時,用vs為winform程序打包就已經完成了,不過此時會在安裝程序的Debug文件夾生成2個文件夾、1個.exe文件和1個.msi文件,而.exe安裝時,又依賴於.msi文件,另外兩個文件夾是對應的 .NET Framework 組件,
這個時候給客戶安裝時拷貝過去的內容較多,也容易安裝出錯,如果把這些安裝內容都打在一起,形成一個.exe 文件,就比較方便了,此時,可以用winrar的自解壓格式壓縮文件來實現,實現過程:
1>將要打在一起的文件及文件夾全部選中,右鍵 →“添加到壓縮文件”,在打開的壓縮面板的“常規”選項卡中勾選“創建自解壓格式壓縮文件”,此時會發現默認的壓縮文件名編程了 .exe 后綴名了;壓縮方式最好選擇“存儲”,這樣打包后的程序會很快解壓縮並運行。如圖:
2>設置運行文件:再切換到“高級”選項卡,點擊“自解壓選項”,“常規”里設置程序解壓后運行的文件(這個很重要)如圖:
或者遇到這種情況,那么提取后運行(點擊安裝時運行)和提取前運行(生成.exe文件時運行,將壓縮成的.exe文件安裝包的圖標立馬換掉,不會等到點擊安裝時更換)都要加上要運行的exe文件
3>設置安裝程序文件的圖標:
切換到“文本和圖標”,點擊“從文件加載自解壓文件圖標”后的“瀏覽”按鈕,選擇安裝程序文件的圖標,如圖:
先不要着急點擊“確定”,還有最后一項設置~ ~ ~
4>切換到“模式”下,勾選“解包到臨時文件夾”和“隱藏全部”,再切換到“更新”下,勾選“覆蓋所有文件”,一路點擊“確定”,大功告成!!
完成了!
“項目名.exe” 就是最中生成的打包文件,直接點擊運行就行了!!
以上就是本人結合網上資料和其他博友文章,親身實踐成功的C# Winform程序打包成安裝項目的心得,並且里面還加入了本人碰到的一些注意事項,特地寫成文章分享給大家。