1、准备一个winfrom项目
2、安装打包插件
在vs中打开 工具>扩展和更新 搜索Instraller Projectts找到对应的打包插件
3、新建打包项目Setup Project
右键解决方案,添加>新建项目
选择Setup Project类型进行新建
点击确定新建项目
Setup 属性说明:
- Author : 一般填公司名,会使用其作为软件安装目录名
- ProductName : 应用程序名称,会使用其作为软件安装目录名
- Localization : 指定软件运行地语种
- TargetPlatform : 指定软件目标平台 x86 or x64
- Version :发布版本号
- InstallAllUsers : True 效果:“控制面板”程序中会显示公司的名称,安装时默认为“任何人”
- ProductCode : 默认给出无需修改,当 Version 变动时会提示更改
4、配置打包程序
右键 Application Folder > Add > 项目输出
弹出的窗口,选择需要打包的项目,点击确定
添加外部依赖文件夹或者配置文件夹,打开需要打包的项目生成的目录,直接选择文件夹拖入即可
添加项目文件,右键 Application Folder > Add > 文件,找到debug目录,全选,点击打开即可
5、添加桌面快捷方式
在 Application Folder 文件夹中选中 主输出 右键生成快捷方式,
将快捷方式移至 User‘s Desktop 文件夹
设置快捷方式名称和图标
6、设置安装包安装时.net版本和Vc++环境检查
右键Setup项目 > 属性
在属性页面点击Prerequisites..
选择需要的.net版本号,选择“从我的应用程序相同位置下载系统必备组件”,点击确定
点击应用,点击确定
7、下载需要的.net放到自己的电脑上
打开 Packages 文件夹,默认情况下,该路径在64位系统上为 C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages
我们选择的是4.6.1,打开DotNetFX461文件夹
打开Product.xml文件
下载 .NET Framework
把几个文件下载下来放在DotNetFX461目录下就可以了。
官方地址下载:下载 .NET Framework 4.6.1
打开zh-Hans文件夹
打开Package.xml,下载对应的语言包
8、下载需要的vc++运行时
打开 Packages 文件夹,默认情况下,该路径在64位系统上为 C:\Program Files (x86)\Microsoft SDKs\ClickOnce Bootstrapper\Packages
找到vc++运行时所在的目录
打开vcredist_x86\zh-Hans\package.xml 文件,复制vc++运行时下载地址去浏览器直接下载
将下载后的安装包分别放在vcredist_x86\zh-Hans 和 vcredist_x86 目录下
重复以上步骤把其它三个的安装包分别下载下来,放到对应位置,如果复制的网址无法下载安装包,直接跳过该文件夹
9、更简单的方式,选择“从组件供应商的网站上下载系统必备组件”,这样可跳过第7、8步
10、生成.msi安装包
右键Setup项目,点击生成
等待一会成功够,打开项目目录Setup/Debug目录发现已经生成安装包
总结:
此方法打包的安装包,安装时会检查电脑是否有对应的.net环境和vc++环境,如果没有对应的环境自动下载安装运行环境。
特别注意:打包后的文件有两个可执行文件一个setup.exe一个xxx.msi,其中setup.exe为环境检查程序,运行该程序会检查电脑安装环境,电脑环境具备后会自动运行xxx.msi进行安装。xxx.msi为安装程序,如果程序对电脑环境没有要求直接运行该文件安装即可。
这样就存在一个问题,怎么实现只有一个可执行文件,能检查环境还能安装程序呢。请参考将Microsoft Visual Studio Installer Projects生成的.exe和msi文件打包成一个可执行文件