转自: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. Part 10 AngularJS sort rows by table header

    Here is what we want to do 1. The data should be sorted when the table column header is clicked 2. T ...

  2. 在sql设计中没法修改表结构

    在做练习的时候经常表没设计好,后来有要去数据库修改表结构但是没词用界面修改的时候都会提示要保存 转自http://www.57xue.com/ItemView/Sql/2016061600160.ht ...

  3. 搭建Cocos Code IDE开发环境

    Cocos Code IDE是Cocos2d-x团队开发的,用于开发Cocos2d-JS和Cocos2d-x Lua绑定的游戏工具,它是基于Eclipse[ Eclipse 是一个开放源代码的.基于J ...

  4. Swift字符串类型

    字符串初始化 1.初始化 let  someString        =   "Some      string    literalvalue" let wiseWords = ...

  5. C语言知识总结(5)

    预处理指令 C语言提供的预处理指令主要有:宏定义.文件包含.条件编译 宏定义 不带参数的宏定义 1>一般形式 #define 宏名 字符串 比如#define A 10 2>作用 它的作用 ...

  6. 通过js判断手机访问跳转到手机站

    第一种方法: <script> ){ //pc //window.location.href="电脑网址"; }else{ //shouji window.locati ...

  7. 4月12日学习笔记——jQuery事件

    下面是在 jQuery 中最常使用的 bind()方法举例:$("#testDiv4").bind("click", showMsg); 我们为 id 是 te ...

  8. 4月12日学习笔记——jQuery管理包装集

    创建新的元素 (1)使用 HTML DOM 创建元素 //使用 Dom 标准创建元素 var select = document.createElement("select"); ...

  9. wage

    #include<iostream> using namespace std; int main() { double wage1,wage2,time; cout<<&quo ...

  10. Debian--changelog

    以前就研究过debian安装包的问题,当时也没有做相关方面的记录,当时也没有完全研究明白,现在重新研究下,现在写下我的一些笔记,等我研究明白了,我会整理出来,出个系列博客,有兴趣的同学,也可以去看E文 ...