转自:http://blog.csdn.net/chenyujing1234/article/details/7558185
最近做了C#软件,发布给客户用时,发现客户运行不起来,原因是客户电脑上没有装Frame Work库.
那么我们得把exe打包发布。发布的安装文件相当的大,以FrameWork为例达到了200多M。这就是为什么
有的应用程序只有1M多,可是发布时却做成了1G。
请注意以下的第五步.
转自:http://www.2cto.com/kf/201012/79607.html
使用VS 自带的打包工具,制作winform安装项目
开发环境:VS 2008 Access
操作系统:Windows XP
开发语言:C#
项目名称:**管理系统
步骤:
第一步:打开开发环境VS2008,新建项目,选择其他项目类型,再选择"安装项目",输入名称及选择安装路径;
第二步:进入文件系统选项卡,选择应用程序文件夹,在中间的空白区域右键选择"添加文件",添加项目文件(exe,dll);
第三步:添加项目所需文件;这里有两个文件夹需要注意(DataBase和Report),因为DataBase是存储项目数据库,而Report则是存储项目所需的报表文件.rpt,因此呢,在应用程序夹中也需要建同名的文件夹,并且添加所需的文件。效果:
第四步:为了在开始程序菜单中和桌面应用程序中看到安装程序,这里我们就需要为项目创建快捷方式。右键选择可执行文件(PersonFinance.exe),创建快捷方式,进行重命名"**公司**管理系统",将该快捷方式拖放到 用户的"程序"菜单 中。重复该步骤将新建的快捷方式添加到 "用户桌面" 文件夹中
最好在用户菜单中建立一个文件夹,存放安装程序
第五步:设置系统必备,右键选择安装项目,进入属性页中,单击"系统必备"按钮,进入系统必备对话框;勾选"创建用于安装系统必备组件的安装程序",在安装系统必备组件列表中,选择
1)、Windows Installer 3.1(必选)
2)、.NET Framework 3.5 (可选)参考最后说明
3)、Crystal Report Basic for Visual Studio2008(x86,x64) (可选) 项目中用到了水晶报表就需要勾选此项
重要一点:勾选"从与我的应用程序相同的位置下载系统必备组件(D)",其实意思就是说你勾选后,生成安装项目时,在你安装项目的路径下,会有你在系统必备组件列表中勾选的组件.(系统自动完成,这一点还不错,不需要你自己去下载组件)
到这里安装包制作差不多完成了一大半 接着来
在生成文件中有XXXXX.publish文件夹
把整个XXXXXX.publish文件夹都拷给客户就对了.在运行setup.exe 时 如果客户缺少FrameWOrk组件,那么自动会提醒安装.
第六步:卸载程序,因为安装包做好之后不能只有安装程序,还要有卸载程序
首先呢,在"C:WINDOWSsystem32"路径下,找到msiexec.exe 添加到应用程序文件夹中,创建快捷方式,并命名"卸载管理系统"或"Uninstall"
其次呢,选择安装项目的ProductCode
右键选择卸载程序的快捷方式,进入属性,在Arguments选项中 输入/x 及ProductCode; 例如:/x {6931BD71-5C5E-4DA1-A861-14C7D1A78B97}
将卸载程序同时存放到用户的开始菜单的文件夹中(在第四步中新建)
第七步:更改安装程序属性,右键选择安装项目属性,可以设置项目作者及名称,其他属性信息可以根据实际情况进行设置.
第八步:生成安装项目
生成时,会出现些警告:应将“msiexec.exe”排除,原因是其源文件“C:WINDOWSsystem32msiexec.exe”受到“Windows 系统文件保护”。
两个或多个对象具有相同的目标位置(“[targetdir]model.dll”)
解决方案:
第一种:都不处理
第二种:第一类警告,可以编写卸载程序
第二种警告:删除相同的文件
安装项目制作完毕.
安装及运行:
直接运行steup.msi 或是setup.exe 会出现
在桌面和开始菜单中也会有相应的安装程序、卸载程序
说明及小结:
1、.net framework 框架是可选的,不一定说你采用的是VS2008开发就必须要使用.net framework 3.5,只要你在程序中没有使用到.net framework 3.5 的特性比如(LINQ),那么你选择框架时,是可以选择2.0的,为什么?因为2.0只有20多MB,而3.5则有200多MB。
更改方式:在安装项目下面有个检测到的依赖项文件,双击里面的Microsoft .net framework,进入了启动条件选择卡,右键选择.net frmaework 在Version中选择你所需的.net framework框架
2、文章中涉及到的名称大家可以根据实际所需进行设置。