同学让帮忙打包个VC的程序,程序比较简单,是带access数据库的统计查询软件,之前用Visual Studio 6.0自带的Package & Deployment Wizard 工具打包过VB的程序,那个工具不能打包VC的程序好像,后来在网上找打包工具,据说 InstallShield 这个工具可以,下载了个教程准备研究研究,结果一个师弟看到了,他说他用Visual Studio 2005自带的打包工具直接就可以,很简单,想想有人指导,就干脆用后者吧,打包成功了,过程记录一下,以后要用就方便些。

Visual Studio 2005 打包过程:

第一步:首先在VS2005中打开一个想要打包的项目,接着在“文件”菜单上指向“添加”,然后单击“新建项目”。在“添加新项目”对话框中,单击“安装和部署项目”,然后选择“模板”窗格中的“安装项目”。在“名称”框中,键入“SetupTest”。(当然这里的名称框中可以随便输入,以下不做一一叙述。)“确定”即可。

这样“解决方案资源管理器”中就可以看到新建的项目

第二步:在“解决方案资源管理器”中选择“SetupTest”项目。在“属性”窗口中,更改Author、Manufacturer,ProductName等参数,(“ProductName”属性指定在文件夹名称和“添加/删除程序”对话框中为该应用程序显示的名称。)

第三步:添加需要打包的文件夹或者文件,在“文件系统编辑器”中,选择“应用程序文件夹”节点,右键--添加--文件夹/文件,文件添加完毕,添加项目输出,点击“应用程序文件夹”右键,在“操作”菜单上指向“添加”,然后单击“项目输出”。在“添加项目输出组”对话框中,从“项目”下拉列表中选择“SetupTest”。从列表中选择“主输出”组。在“配置”框中,选择“(活动)”。单击“确定”关闭对话框
第四步:为应用程序创建快捷方式。在“文件系统编辑器”中,选中“来自 SetupTest的主输出”节点。并右键点击,创建快捷方式。并为此快捷方式重命名为你所希望出现在用户桌面上的名称。同时把些快捷方式拖拽至左部的“用户桌面”文件夹中。同理为“用户的程序菜单”添加快捷方式(下图是另外一个打包文件的截图),点击某个快捷方式,在他的属性栏可以设置快捷方式的图标等属性。
第五步:添加卸载功能,在添加你的应用程序项目的时候,多添加一个msiexec.exe进去,这个文件在c:\windows\system32文件夹下,将其复制到程序集的可执行文件路径下(避免Windows保护),添加进去以后,为了让他更像个卸载程序,把他的名字改成"Uninstall.exe", 当然这个关系不大,改不改都行的. 然后给他创建一个快捷方式(再添加进来的exe文件上点击右键--创建快捷方式), 放到桌面或者"开始-程序"中, 我选择放在了开始菜单中,然后下面我们要的做的就是查找这个部署项目的ProductCode了,在“解决方案资源管理器”中选择“SetupTest”项目,鼠标左键单击项目名称,记住是左键单击,然后点击属性标签,注意:不是右击的属性,这个区别很大,这时你就可以看到ProductCode了, 复制ProductCode,然后打开你创建的那个快捷方式的属性对话框, 在Aguements属性中输入"/x {ProductCode}", 这样就添加了卸载功能。
 

第六步:设置程序文件安装的默认路径地址,选择“应用程序文件夹”一项,点选右键中的“属性”选项,在属性窗格中,将“DefaultLocation”属性值修改为我们希望用户默认的安装位置

第七步:设置系统必备选项,工程名,右键--属性--右下角有个“系统必备”--进入系统必备,一般.NET Framework 2.0默认选择,我自己还选择了Visual C++运行库(x86),然后下边“指定系统必备组件的安装位置”默认是第一个“从组件供应商的网站上下载系统必备组件”,如果电脑不能上网就无法下载所需组件,所以我下载了.NET Framework 2.0安装软件,打包在了安装程序中,然后选择第二项“从与我的应用程序相同的位置下载系统必备组件”
第八步:生成安装文件
在“解决方案管理器”中选择我们要发布的项目,点选右键中的“生成”或者“重新生成”。成功以后我们可以直接到解决方案所在的文件夹中找到生成的文件。这一步也可以用系统“生成”菜单生成。
 

有时候程序的安装运行还需要某些软件、补丁,比如IE的版本要在5.0以上等,这时就需要添加启动条件。在“解决方案资源管理器”中选择“SetupTest”项目。在“视图”菜单上指向“编辑器”,然后单击“启动条件”。在“启动条件编辑器”中,选择“目标计算机上的要求”节点。在“操作”菜单上选择“添加文件启动条件”。此时,将在“搜索目标计算机”节点之下添加一个“搜索 File1”节点,在“启动条件”节点之下添加一个“Condition1”节点(condition :以…为条件)。将“搜索 File1”重命名为“搜索 Internet Explorer”。在“属性”窗口中,将“FileName”属性设置为 Iexplore.exe,将“Folder”属性设置为 [ProgramFilesFolder],将“Depth”属性设置为 2,将“MinVersion”属性设置为 5.00。选择“Condition1”节点。将“Message”属性设置为下面的内容为“此程序需要 Microsoft Internet Explorer 5.0 或更高版本。请安装 Internet Explorer 并重新运行 My TEST Installer。”

 
以上内容参考了以下两个网站

http://q.sohu.com/forum/5/topic/4708441

http://blog.csdn.net/lanmao100/archive/2008/03/03/2142397.aspx

这是我第一次打包程序总结的打包过程,中间肯定有不完善的地方,哪位高人看到了,帮我指出并完善,谢谢!

VS打包的更多相关文章

  1. Android Studio 多个编译环境配置 多渠道打包 APK输出配置

    看完这篇你学到什么: 熟悉gradle的构建配置 熟悉代码构建环境的目录结构,你知道的不仅仅是只有src/main 开发.生成环境等等环境可以任意切换打包 多渠道打包 APK输出文件配置 需求 一般我 ...

  2. 【原创分享·支付宝支付】HBuilder打包APP调用支付宝客户端支付

    前言 最近有点空余时间,所以,就研究了一下APP支付.前面很早就搞完APP的微信支付了,但是由于时间上和应用上的情况,支付宝一直没空去研究.然后等我空了的时候,发现支付宝居然升级了支付逻辑,虽然目前还 ...

  3. 细说前端自动化打包工具--webpack

    背景 记得2004年的时候,互联网开发就是做网页,那时也没有前端和后端的区分,有时一个网站就是一些纯静态的html,通过链接组织在一起.用过Dreamweaver的都知道,做网页就像用word编辑文档 ...

  4. .NET Core 系列5 :使用 Nuget打包类库

    NuGet是个开源项目,项目包括 NuGet VS插件/NuGet Explorer/NuGetServer/NuGet命令行等项目,.NET Core项目完全使用Nuget 管理组件之间的依赖关系, ...

  5. Node-Webkit打包

    1.node-webkit是什么? NW.js is an app runtime based on Chromium and node.js. You can write native apps i ...

  6. Gradle 实现 Android 多渠道定制化打包

    Gradle 实现 Android 多渠道定制化打包 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近在项目中遇到需要实现 Apk 多渠道.定制化打包, Google .百度查找了一些资料, ...

  7. 【踩坑速记】开源日历控件,顺便全面解析开源库打包发布到Bintray/Jcenter全过程(新),让开源更简单~

    一.写在前面 自使用android studio开始,就被它独特的依赖方式:compile 'com.android.support:appcompat-v7:25.0.1'所深深吸引,自从有了它,麻 ...

  8. 4.Android 打包时出现的Android Export aborted because fatal error were founds [closed]

    Android 程序开发完成后,如果要发布到互联网上供别人使用,就需要将自己的程序打包成Android 安装包文件(Android Package,APK),其扩展名为.apk.使用run as 也能 ...

  9. 初学seaJs模块化开发,利用grunt打包,减少http请求

    原文地址:初学seaJs模块化开发,利用grunt打包,减少http请求 未压缩合并的演示地址:demo2 学习seaJs的模块化开发,适合对seajs基础有所了解的同学看,目录结构 js — —di ...

  10. 以向VS 程序打包集成自动写入注册表功能为例,介绍如何实现自由控制安装过程

    最近由于项目部署时需要更灵活的控制程序安装的流程以及自定义安装行为,特意研究了一下VS程序打包,把解决办法和大家分享一下. 以VS2010为例: 这是一个已经设置好最基本的Visual Studio ...

随机推荐

  1. maven 名词

    maven 坐标: 坐标 其实就是 通过几种不同的元素描述来找到其对应的构件. maven 定义坐标的元素有: 1. groupId : 定义当前maven 项目隶属的实际项目,一般是域名的反向写法 ...

  2. Java序列化之transient和serialVersionUID的使用

    package FileDemo; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IO ...

  3. [Objective-c 基础 - 3.2] ARC

    A.ARC的基本原理 1.ARC的判断原则:只有没有强指针指向对象,就会立即释放对象 注意,在以下情况,会立即回收内存: (1)指针超出作用域 { Person *p1 = [[Personalloc ...

  4. UVa123 - Searching Quickly

    题目地址:点击打开链接 C++代码: #include <iostream> #include <set> #include <map> #include < ...

  5. DotNET 开发常用工具汇集

    开发用专业软件已经很多了,来说说开发用的辅助软件把--分享我常使用的辅助软件 个人工具清单 .NET 程序员十种必备工具 新.net开发十大必备工具 .NET开发不可错过的25款必备工具 我的生活必备 ...

  6. Android开发之有效获取状态栏(StatusBar)高度

    获取状态栏高度 一.传统方式:有时获取为0,解决方法看  二 1 2 3 4 代码 Rect frame = new Rect(); getWindow().getDecorView().getWin ...

  7. win2008下c#调用directshow问题

    打开摄像头时报错 网上查 说缺少qedit.dll,下载后注册也不行. 最后安装暴风影音,测试ok

  8. cocos2d-x 网格动画深入分析

    转自:http://www.2cto.com/kf/201212/179828.html 在TestCpp中的EffectsTest示例中展示了一些屏幕特效,它是将屏幕划分为多个格子,并对这些格子进行 ...

  9. htm explorer

    链接:https://github.com/450640526/HtmExplorer   最低环境 系统安装了.NET 4.0                地址:http://www.baidu. ...

  10. Android手机上判断网络运营商

    我们想获取手机的运营商信息.通常都会去调用系统的TelephonyManager类的取数据.但是很多时候可能取不到卡的信息(例如双卡手机和 一些特殊卡),这样就区别不了运营商了.但是有时候我们的需求要 ...