[转载]VS2012程序打包部署详解
上篇博客把收费系统的总体设计进行了一遍讲解,讲解的同时掺杂了些有关.NET编译机制的总结。程序编写测试完成后接下来我们要做的是打包部署程序,但VS2012让人心痛的是没有了打包工具。不知道出于什么原因微软没有将打包工具集成在开发环境中,但是我知道总会有解决办法的。 经过翻阅资料发现,VS2012虽然没有集成打包工具,但它为我们提供了下载的端口,需要我们手动安装一个插件InstallShield。网上有很多第三方的打包工具,但为什么偏要使用微软提供的呢?因为最原始的也是最高级的,万变不离其宗。
一、.NET程序部署机制
上篇博客稍微总结了下.NET程序的编译机制,下面了解些有关程序部署的一些机制。在.NET程序包下有三个文件夹分别是bin文件、obj文件、My Project文件,他们分别封存着程序的组成部分。 bin目录用来存放程序的编译结果,它有Debug和Release两个版本,分别对应的文件夹为bin/Debug和bin/Release,这个文件夹是默认的输出路径,在编译后生成的程序文件会存放在该目录下。当然我们也可以手动修改程序的输出路径,修改方法:项目属性—>配置属性—>输出路径来修改。 obj目录是用来保存每个模块的编译结果,用来放置程序生成时的中间文件。程序不会直接生成出可用的文件,而是由源程序生成中间文件,再编译中间文件生成可执行文件的。在.NET中,编译是分模块进行的,编译整个完成后会合并为一个.DLL或.EXE保存到bin目录下。因为每次编译时默认都是采用增量编译,即只重新编译改变了的模块,obj保存每个模块的编译结果,用来加快编译速度。是否采用增量编译,可以通过:项目属性—>配置属性—>高级—>增量编译来设置。 My Project目录定义你程序集的属性,被称为项目属性文件夹。目录下的AssemblyInfo类文件,用于保存程序集的信息,如名称,版本等,这些信息一般与项目属性面板中的数据对应,不需要手动编写。 在程序编译生成后,程序的源文件就不在重要了,重要的是DLL、EXE、Config等的程序的组件,有了程序的组件程序就能够正常运行。所以在发布制作安装程序时我们只需要将程序的组件打包即可。
二、InstallShield程序打包图解
VS2012中打包工具被看做程序集,在使用时和程序集一样被创建到程序解决方案下。需要我们做的是添加项目即可。但是对于初次使用的朋友来说,我们需要根据提示一步步的先下载安装该打包工具。具体的安装方法不再详述,网上资料很多 。
1、设置安装程序集
InstallShield安装完成后,执行以下步骤右键解决方案-->添加-->新建项目-->其他项目类型-->安装和部署,具体操作如下图:
2、发布程序
在继续往下操作前一定要选择发布,在启动项目的属性内设置发布文件夹默认路径设置为安装系统的文件夹。
3、设置程序安装信息
Application Information主要设置程序在安装时显示的有关程序的一些信息,如:程序的开发者、程序开发公司,程序安装图标和程序简介等。
4、添加程序文件
在下图中的第四步中添加程序文件时会有主输出、源文件等多个选项框,其实它的生成机制和.NET程序的编译机制是相同的。下图中的第五部显示出的UI.主输出,在生成安装文件后程序包中包含了与UI层进行交互引用的其它层的引用文件,但不会生成和UI层(启动层)没有相连的组件,我们只能通过手动添加。
5、添加程序的资源文件
程序源文件是程序运行的资源文件,也包含了程序的源码文件。如果不需要打包源文件的话,这步可以省略。
6、设置安装注册文件
如果开发的程序中使用了第三方控件,这时在安装时往往需要注册到目标系统中,同样Install也为用户提供了此功能。Install能够通过设置dll文件或OCX文件的注册,首先要添加注册的文件,然后通过设置文件的安装属性来指定注册与否,设置如下图。
7、设计程序的打开方式
Application Shortcuts 程序快捷打开方式,Install为用户提供了两种显示形式,分别是Win菜单和桌面。下图显示了设置的一些注意项,此阶段也可以设置程序的显示图标。
8、设置程序安装注册表项
一般的应用程序在安装时不需要考虑程序的注册表项,此步骤可以不用设置。
9、设置程序安装时的安装视图
根据自己的需要进行设计即可。
10、打包环境
设置完上面的步骤后,我们的打包程序基本设置完成,但是在一些情况下我们往往要打包.net环境或者其它程序运行所需要的Windows环境,Install也为我们很好的设计了环境的打包。
操作完上述步骤后,程序打包基本设置已经完成,接下来要做的就是生成解决方案。生成解决方案后会在安装程序集下面生成一个名为Setup的文件夹,安装文件就保存在下面的目录中。Install在生成安装文件后会有Setup.exe和.msi两中安装文件,exe文件是安装的引导文件,核心文件是msi文件,里面封存了程序的组件。在里面找到Setup.exe文件及msi文件即可进行安装。
最后还要强调一点,Install打包工具中并没有继承中文环境,在它的底层语言库中没有中文语言,所以解决方案、程序集名称等涉及到与主输出相关的文件最好不要以中文名命名,否则会出现如下的错误:“ -7184: The FileName column of the File table includes characters that are not available on code page 1252”,该错误是在说明在代码段1252处没有发现和文件名相关的语言库。
万变不离其宗,微软的Install程序打包工具虽然使用时较繁琐,但原始的就是最高级的,其它的打包工具和它相比也差不到哪儿去。
原文地址:http://blog.csdn.net/zhang_xinxiu/article/details/9099757
[转载]VS2012程序打包部署详解的更多相关文章
- VS2012程序打包部署详解
VS2012没有自带打包工具,所以要先下载并安装一个打包工具.我采用微软提供的打包工具: InstallShield2015LimitedEdition.下载地址:https://msdn.micr ...
- 【转】VS2012程序打包部署详解
上篇博客把收费系统的总体设计进行了一遍讲解,讲解的同时掺杂了些有关.NET编译机制的总结.程序编写测试完成后接下来我们要做的是打包部署程序,但VS2012让人心痛的是没有了打包工具.不知道出于什么原因 ...
- (转) VS2012程序打包部署详解
程序编写测试完成后接下来我们要做的是打包部署程序,但VS2012让人心痛的是没有了打包工具.不知道出于什么原因微软没有将打包工具集成在开发环境中,但是我知道总会有解决办法的. 经过翻阅资料发现 ...
- VS2012及以上版本 程序打包部署详解
引用: http://blog.csdn.net/zhang_xinxiu/article/details/9099757 程序编写测试完成后接下来我们要做的是打包部署程序,但VS2012让人心痛的 ...
- VS2012 QT程序打包部署详解
1.设置安装程序集 InstallShield安装完成后,执行以下步骤右键解决方案-->添加-->新建项目-->其他项目类型-->安装和部署,具体操作如下图: 2.发布程序 在 ...
- 【CITE】VS2012程序打包部署
选择Debug模式将项目重新生成,并保证没有任何bug 选择解决方案,右击——添加——新建项目——安装和部署 下载过打包工具InstallShield2013LimitedEdition, ...
- VS2010安装项目程序打包操作详解
(转自:http://blog.sina.com.cn/s/blog_74f702e60101at62.html) 1.打开VS2010,选择 新建项目---其他项目类型---Visual Studi ...
- 用Advanced Installer制作DotNetBar for Windows Forms 12.0.0.1_冰河之刃重打包版详解
关于 DotNetBar for Windows Forms 12.0.0.1_冰河之刃重打包版 --------------------11.8.0.8_冰河之刃重打包版-------------- ...
- Solr部署详解
Solr部署详解 时间:2013-11-24 方式:转载 目录 1 solr概述 1.1 solr的简介 1.2 solr的特点 2 Solr安装 2.1 安装JDK 2.2 安装Tomcat 2.3 ...
随机推荐
- HttpClient(4.3.5) - HTTP Protocol Interceptors
The HTTP protocol interceptor is a routine that implements a specific aspect of the HTTP protocol. U ...
- Linux 命令 - ping: 向网络主机发送 ICMP ECHO_REQUEST 包
ping 命令会向指定的网络主机发送特殊网络数据报 IMCP ECHO_REQUEST.多数网络设备收到该数据包后会做出回应,通过此法即可验证网络连接是否正常. 有时从安全角度出发,通常会配置部分网络 ...
- css3中定义required,focus,valid和invalid样式
css3 提示只适用于高级浏览器: ChromeFirefoxSafariIE9+ valid.invalid.required的定义 代码如下 复制代码 input:required, input ...
- C#中子类调用父类的实现方法
这篇文章主要介绍了C#中子类调用父类的实现方法,通过实例逐步分析了类中初始化构造函数的执行顺序问题,有助于加深对C#面向对象程序设计的理解,需要的朋友可以参考下 本文实例讲述了C#中实现子类调 ...
- (转)Tomcat内存设置
Java内存溢出详解 一.常见的Java内存溢出有以下三种: 1. java.lang.OutOfMemoryError: Java heap space ----JVM Heap(堆)溢出 JVM在 ...
- ZStack之ZDApp_Init解析
[注:本文源自博客园http://www.cnblogs.com/cherishui/,为尊重劳动者成果,如需转载请保留此行] 以下代码分析基于ZStack-CC2530-2.5.1a,开发环境为 I ...
- [java学习笔记]java语言核心----面向对象基础
1.面向对象概述 面向对象是java语言的核心.是对应于面向过程而言的. 面向过程:强调的是过程,即动作.在java中动作就是函数.C语言就是面向过程的. 如:把大象装进冰箱需要几步? 答:需要三步: ...
- SQL 远程过程调用失败【0x800706be】或正在关闭 【0x80041033】解决方法
在SQL Server 配置管理器中出现[远程过程调用失败.[0x800706be]]或者[正在关闭 [0x80041033]]错误,如图所示 上网查找发现时SQL2008与VS2012或VS2013 ...
- Mysql数据库迁移 Ubuntu14.04
1. 停止数据库服务 sudo service mysql stop 2. 创建数据迁移目标文件夹(实际应该是挂载到新硬盘上) cd /var/lib ls -l drwx------ 6 mysq ...
- 小米2s换了屏幕后不能近距离对焦,拆过后无法对焦?
主要问题就是小米2/2S手机中壳套后摄像头的位置,里面还有一个正方形的黑色塑胶垫片,一般拆机后这个垫片是不会掉出来的,所以一般上盖时也是直接把中壳合上后上螺丝. 这样安装基本会导致塑胶垫片把摄像头顶住 ...