VisualStudio2005将软件打包生成安装包
的有关信息介绍如下:
每个人开发好软件,都需要将软件打包生成安装包,以便可以将EXE执行文件和卸载软件功能安装到电脑上,方便用户使用。打包过程如果设置上稍不小心,很容易出问题,所以我总结了整个过程和方法,给大家参考使用。其它版本VS,出入不大,就不一一解释了。
创建一个安装向导项目或安装部署项目:
新建项目-〉其他项目类型-〉安装与部署-〉安装向导(或安装部署),如命名为setup。
将要打包的项目导入到这个安装项目中,有两种方式:
第一种:自动方式,在解决方案上右击-〉添加-〉现有项目-〉选择你要打包的项目,这样就会把这个项目添加到该解决方案中来,然后在安装项目setup上右击-〉添加-〉项目输出-〉主输出,在项目下拉框中选择刚添加的项目,选择这样就会把这个要打包的项目的基本文件添加到左侧的应用程序文件夹中,名字为主输出来自**(活动)。
第二种:手动方式,右击左侧的应用程序文件夹(这个文件夹就是要打包的项目中需要的文件)-〉添加-〉文件或文件夹,主要是exe文件和其他配置文件或数据文件。
特殊说明:
在第一种方式中,系统会自动将要打包的项目所依赖的依赖项添加到“检测到的依赖项”中,如Microsoft .Net Framework,如果没有就需要手动添加了。(选择这项:从我的应用程序文件夹下载必备组件)
在第二种方式中,依赖项需要手动添加,右击项目-->添加-->合并模块,选择要添加的文件,.Net Framework是必须的,位于:C:\Program Files\Common Files\Merge Modules\ 下。
注意在第一种方式中,如果要打包的项目有配置文件或数据文件等其他,还需要手动将它们添加到应用程序文件夹中。
建立目标机器上的开始-〉程序菜单和桌面的快捷方式(一定要在右边的空白处右键添加快捷方式方法进行选择执行文件)
右击应用程序文件夹中的可执行文件-〉创建快捷方式,创建完后,可以重命名为合适的中文名,将该快捷方式剪贴到用户的“程序”菜单中,一般可以先在“程序”菜单中创建一个文件夹。同样的,再创建一个到用户桌面中。
创建卸载程序, 卸载程序的创建方式也有两种:
第一种,自己编写代码,代码如下
///
/// 应用程序的主入口点。
///
[STAThread]
static void Main()
{
System.Diagnostics.Process.Start("msiexec", "/X{C4A3986F-EA12-4194-BB8B-A9777E78A6ED}");
Application.Exit();
//Application.Run(new Form1());
}
其中{C4A3986F-EA12-4194-BB8B-A9777E78A6ED}为安装项目的ProductCode属性值。查看该值时需要点击解决方案中的安装项目的名字,然后在属性窗口(菜单中的视图-〉属性窗口)中查看ProductCode属性值。
然后将该段代码的可执行文件加入到应用程序文件夹中,在卸载项上指向它即可.
第二种,使用msi实现
在左侧的应用程序文件夹中添加c:\windows\system32\msiexec.exe文件,为了明确其意义,可改为uninstall.exe。然后按照上面提到的步骤创建该卸载文件的快捷方式,同样剪贴到用户的“程序”菜单中。
在第三步中提到先在“程序”菜单中创建一个文件夹,所以这里将该文件放到这个文件夹下,否则打包的程序安装后,在开始-〉程序列表中是看起来毫无关系的两个快捷方式。为了便于识别,将此快捷方式的名字修改为“卸载**”,**为软件名称。
修改该快捷方式的Argument属性值为工程中属性ProductCode一样的: "/X{410AAD68-7AB7-4744-AD37-1984045EBC6F}",ProductCode的查看方式见第4步中的第一种方式。
设置安装项目的属性:
1) 设置安装文件安装时的路径
该路径是由安装项目的属性manufacture,productname来决定的,为"C:\ProgramFiles\[manufacture]\[productname],可以修改这两个属性值,或者干脆去掉manufacture属性,操作如下:
右击左边的"应用程序文件夹"打开属性对话框,将属性中的"defaultlocation"的路径中的"[manufacturer]"去掉。
2) 在解决方案管理器中右击安装项目的名称-〉属性,在打开的属性页中,选择"系统必备",勾中.Net Framework2.0。
并且选中下面的“从与我相同的位置下载系统必备组件”。默认是第一项从网站进行下载,第三项是手工添加的方式。
3) 可选。设置安装项目的RemovePreviousVersion属性为True,InstallAllUsers属性为True。
生成解决方案:
生成-〉生成解决方案。



