转自: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、文章中涉及到的名称大家可以根据实际所需进行设置。

c# 应用程序部署发布的更多相关文章

  1. QT程序在windows下部署发布

    转载:http://www.cnblogs.com/Fan_Fan/archive/2010/05/29/1746860.html QT程序在windows下部署发布 以下包括了部分网上收集的,以及q ...

  2. Tomcat部署发布JSP应用程序的三种方法 (转)

    Tomcat部署发布JSP应用程序的三种方法     1.直接放到Webapps目录下      Tomcat的Webapps目录是Tomcat默认的应用目录,当服务器启动时,会加载所有这个目录下的应 ...

  3. NET5实践:项目创建-结构概述-程序运行-发布部署

    ASP.NET5实践01:项目创建-结构概述-程序运行-发布部署   1.项目创建 ASP.NET5项目模板有三种: 新建项目: 选择模板: 2.结构概述 References对应配置是project ...

  4. ASP.NET网站怎么发布 Web项目程序怎么发布部署(暂时收藏)

    Web程序如何发布部署呢.网站项目做好了,需要发布出来,提交给客户,装上服务器.那怎么在ASP.NET开发环境中将网站程序发布出来呢 ^_^   工具/原料 Visual Studio 2010  ( ...

  5. WPF ClickOnce应用程序IIS部署发布攻略

    WPF程序非常适合公司内网使用,唯一缺点就是客户端要安装.net框架4.0.优势也很明显,在客户端运行的是一个WinForm程序,自动下载,可以充分利用客户机的性能,而且是以当前的Windows用户权 ...

  6. 关于在windows下部署发布QT程序的总结

    原文请看:http://www.cnblogs.com/javaexam2/archive/2011/05/18/2632916.html 关于在windows下部署发布QT程序的总结 2008-06 ...

  7. 快速搞懂.NET 5/.NET Core应用程序的发布部署

    .NET Framework时代,.NET 应用程序大多直接部署运行在Windows服务器上,当然也可以通过Mono部署运行在Linux上.无论部署exe,还是IIS站点.或是Windows Serv ...

  8. deployment与Web应用程序部署

    定义用于支持 Web 应用程序部署的配置设置. <deployment retail="true|false" /> retail属性:设置一个值,该值指定是否以发布模 ...

  9. 使用VS Code 开发.NET Core 应用程序 部署到Linux 跨平台

    使用VS Code 开发.NET Core 应用程序 部署到Linux 跨平台. 前面讲解了VSCode开发调试 .NET Core.都只是在windows下运行. .NET Core真正的核心是跨平 ...

随机推荐

  1. Android-多平台分享(新浪微博)

    很多时候,我们都会用到分享,比如说逛淘宝时,看中一件衣服,想要给小伙伴看看,我会将这件宝贝分享给我的小伙伴,当然,分享的平台就有很多啦,我分享他微信.QQ.或者微博都是可以,但是本人最喜欢微信分享啦 ...

  2. Python Opearte SQLAlchemy Do Something

    近段时间在看SQLAlchemy,总之万事开头难,但是么办法. Database Urls The create_engine() function produces an Engine object ...

  3. JQuery处理json与ajax返回JSON实例

    一.JSON的一些基础知识. JSON中对象通过“{}”来标识,一个“{}”代表一个对象,如{“AreaId”:”123”},对象的值是键值对的形式(key:value). “[]”,标识数组,数组内 ...

  4. 集合类学习之HashMap

    一.HashMap概述 HashMap基于哈希表的 Map 接口的实现.此实现提供所有可选的映射操作,并允许使用 null 值和 null 键.(除了不同步和允许使用 null 之外,HashMap  ...

  5. cocos2d-x中Node中重要的属性

    Node还有两个非常重要的属性:position和anchorPoint. position(位置)属性是Node对象的实际位置.position属性往往还要配合使用anchorPoint属性,为了将 ...

  6. UI布局

    1,初始化控件一般在onCreate()中完成,由于构造器中尚未完成控件加载,不能在其内初始化控件. 2,Activity子类必须含有无参构造.Intent.startActivity()方法调用的是 ...

  7. Qt 5 在Windows下 出现QApplication: No such file or directory 问题的解决办法

    解决方法是:在*.pro工程项目文件中添加一行QT += widgets,然后再编译运行就OK了.

  8. IEEE Floating Point Standard (IEEE754浮点数表示法标准)

    浮点数与定点数表示法是我们在计算机中常用的表示方法 所以必须要弄懂原理,特别是在FPGA里面,由于FPGA不能像在MCU一样直接用乘除法. 定点数 首先说一下简单的定点数,定点数是克服整数表示法不能表 ...

  9. jdk、maven配置

    JDK环境变量配置1.新建系统变量 1)变量名:JAVA_HOME 变量值:C:\Program Files\Java\jdk1.7.0_15 2)变量名:CLASSPATH 变量值:.;%JAVA_ ...

  10. Oracle10G的Sga_max_size和sga_target应该如何设置啊!

    1调整原因 我们的客户反应现在我们公司的软件使用起来比较漫.目前他们已经用快要两年了.根据用户反应的情况,公司派我到现场做数据库调优.我在现场走访了几个部门,也向操作人员了解了一些情况.我初步分析认定 ...