首先,创建一个安装和部署项目。步骤如下:
1.在"解决方案资源管理器"中的解决方案中添加一个新项目。
用鼠标右键单击解决方案,在弹出的菜单中选择"添加"->"新建项目"。在打开的对话框中选择"安装和部署项目",并选择"Web安装项目"模板。在输入项目名称后,点击"确定"按钮,将新项目添加到解决方案中。
2.将项目的输出添加到安装和部署项目中。
添加完安装和部署项目后,vs.net2003 IDE会自动打开一个名为"文件系统"的管理器。用鼠标右键单击此管理器右边树型结构中的"Web应用程序文件夹",在弹出的菜单中选择"添加"->"项目输出"。在弹出的对话框中,选择"项目"(这时只有一个,就是你的web应用程序项目),然后在下面的列表中选择"主输出"和"内容文件"两项(可以复选),接着在"配置"中选择"Release .NET",点击"确定"按钮。
经过上面两个步骤,一个基本的安装和部署程序就制作完成了,将此项目编译后就得到了一个Web安装程序包。
然而,在很多的情况下,我们做的Web应用程序都要使用到数据库,能不能在安装程序的同时也将数据库一起安装呢?答案是肯定的。那该怎么做呢?这个问题李洪根先生已经解决了,具体内容可以参看下面的文章
http://blog.csdn.net/lihonggen0/archive/2004/05/17/13654.aspx
在李洪根先生的这篇文章中详尽的介绍了安装程序的制作和如何同时安装数据库。在此大致叙述如下:
1.新建一个类库项目,删除自动生成的Class.cs,重新添加一个新项。鼠标右键此项目,在弹出的菜单中选择"添加"->"添加新项",在弹出的对话框中选择"安装程序类"。
2.创建一个自定义的安装对话框。鼠标右键点击"解决方案资源管理器"中的安装和部署项目,在弹出的菜单中选择"视图"->"用户界面"。在打开的"用户界面"管理器中,鼠标右键点击"启动",在弹出的菜单中选择"添加对话框"。在打开的对话框中选择"文本框(A)"。选择"文本框(A)",在属性中,依次设置含Property属性为CUSTOMTEXT1,CUSTOMTEXT2,CUSTOMTEXT3,CUSTOMTEXT4。
3.创建自定义操作。鼠标右键点击"解决方案资源管理器"中的安装和部署项目,在弹出的菜单中选择"视图"->"自定义操作"。在打开的"自定义操作"管理器中,鼠标右键点击"安装",在弹出的菜单中选择"添加自定义操作"。在打开的对话框中,在"查找范围"中选择"Web应用程序文件夹",选择下面列表中的"主输出来自Install1(活动)"(Install1是"安装程序类"所在的项目名。如果列表中没有,可以用上面提到的"将项目的输出添加到安装和部署项目中"的方法添加)。然后在"自定义操作"管理器中选择刚添加的内容,在属性窗口中设置CustomActionData属性/dbname=[CUSTOMTEXT1] /server=[CUSTOMTEXT2] /user=[CUSTOMTEXT3] /pwd==[CUSTOMTEXT4] /targetdir="[TARGETDIR]\"
注意:每个设置内容以/分隔,且以空格分开。
4.在此类中重写Install方法,并添加下面的代码
string strConn=String.Format("data source={0};user id={1};password={2};",this.Context.Parameters["server"],this.Context.Parameters["user"],this.Context.Parameters["pwd"]);
this.ExecuteSQL(strConn,"master","CREATE DATABASE "+this.Context.Parameters["dbname"]);
System.Diagnostics.Process pSQL=new System.Diagnostics.Process();
pSQL.StartInfo.FileName="osql.exe";
pSQL.StartInfo.Arguments=String.Format(" -U {0} -P {1} -d{2} -i {3}db.sql",this.Context.Parameters["user"],this.Context.Parameters["pwd"], this.Context.Parameters["dbname"],this.Context.Parameters["targetdir"]);
pSQL.StartInfo.WindowStyle=System.Diagnostics.ProcessWindowStyle.Hidden;
pSQL.Start();
pSQL.WaitForExit();
pSQL.Close();
这样,编译后的安装程序就可以连数据库一起安装了。
安装数据库的问题解决了,还有一个问题,那就是要使ASP.NET程序运行,一个重要的条件就是目标计算机上必须有.NET框架,那能不能在安装程序时也一同将.NET框架一块安装了呢?答案还是肯定的。具体可以参看
http://www.microsoft.com/china/MSDN/library/netFramework/netframework/Nfdnnetdepvsredistdeploy1_1.mspx
在这篇文章中提到了几种不同的方法重新分发.NET框架,其中最简单的一种应该算是使用VS.NET2003了。大致的步骤如下:
1.安装VS.NET框架引导程序插件。这个插件可以从微软的网站上下载,下载地址如下:
http://www.microsoft.com/downloads/details.aspx?familyid=627921a0-d9e7-43d6-a293-72f9c370bd19&displaylang=en
2.在"解决方案资源管理器"中,用鼠标右键单击安装和部署项目,在弹出的菜单中选择"视图"->"启动条件",打开"启动条件"管理器。
3.在"启动条件"管理器中,右键点击"目标计算机上的要求",在弹出的的菜单中选择"添加注册表启动条件"。你会发现在"搜索目标计算机"中多了一项"搜索 RegistryEntry1",在"启动条件"中多了一项"Condition1"。
4.选择"搜索 RegistryEntry1",在"属性"对话框中填写如下内容:
Property:MDACSEARCH
RegKey:Software\Microsoft\DataAccess
Root:vsdrrHKLM
Value:FullInstallVer
选择"Condition1" ,在"属性"对话框中填写如下内容:
Condition:MDACSEARCH>="2.6"
进行这一步是因为在安装.NET框架的时候需要MDAC。
OK,现在编译安装和部署项目,就得到了一个可以同时安装.NET框架的安装程序。