作为研发人员,在本机上开发的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程序打包成安装项目的心得,并且里面还加入了本人碰到的一些注意事项,特地写成文章分享给大家。