【asp精品源码栏目提醒】:网学会员在asp精品源码频道为大家收集整理了“【精品】如何用VS2005制作Web安装程序 - 其它资料“提供大家参考,希望对大家有所帮助!
如何用 VS2005 制作 Web 安装程序网站完成后,需要部署到目标机器上,方法有很多,直接把文件 Copy 到目标机器上,执行 SQL 脚本,配置 IIS ,这样可以做到;也可以使用 InstallShield 这样到专业制作软件来打包。
本篇文章是使用 VS2005 自带到安装部署工具来制作 exe 安装文件。
涉及到到内容包括:使用安装部署工具,建立数据库,配置 IIS ,文件操作,注册表等。
参考了网上关于使用 VS 制作安装程序的文章。
环境: Windows2003 VS2005 SQL2005 。
注:本文只是为了实现,没有强调方法,变量等的写法标准。
使用 VS2005 制作安装程序的时候,有多种选择,如下图:我想一般常用的可能就最上面的两种。
当使用 Web 安装项目时,执行制作好的 msi 安装文件时,会发现实际上是添加虚拟目录而不是添加网站,而且无法选择安装目录,当然,可以自己写脚本来对 IIS 进行修改。
不过在这篇文章里,将不采用此模式。
本篇文章用的是使用“安装项目”,就和打包 WinForm 程序一样,把 Web 文件部署到目标机器上,然后重写 install 方法,配置 IIS ,执行 SQL 脚本,修改 web.config 文件等。
在开始整个过程之前,需要先了解一下“预编译”的概念, MSDN 上的说明是:默认情况下,在用户首次请求资源(如网站的一个页)时,将动态编译 ASP.NET 网页和代码文件。
第一次编译页和代码文件之后,会缓存编译后的资源,这样将大大提高随后对同一页提出的请求的效率。
请查阅 MSDN “预编译”相关文档。
准备一个文件 DBSQL.txt ,在里面包含连接数据库后需要执行的 SQL 脚本,在本例中使用了简单的一个 Create Tabel 的 SQL 。
好了,现在开干,吼吼 打开 VS2005 ,打开一个网站项目,这里是打开的本地 localhost ,如图:新加一个页面,随便取个名字(本文中为 ClientCallback.aspx ),然后写一个简单的按钮事件即可,这不是本文的重点,由你随意处理 _ 再添加 web 配置文件即 web.config ,在 下添加此文件到时候是需要发布到目标机器上的。
(关于连接数据库字符串, VS2005 里面有专门的 connectionStrings ,本文未使用,可查阅帮助)点击生成网站,访问页面, ok !选择菜单生成=》发布网站:点击确定后,网站已经生成,这些就是需要部署到目标机器上的所有文件。
点击菜单文件=》添加=》新建项目,添加安装部署项目,如图:添加安装项目类库:删除默认的 Class1.cs 新加一个安装程序类文件,名为 MyInstaller.cs :在此项目中,添加对 System.EnterpriseServices 和 System.DirectoryServices 的引用,在操作 IIS 的时候,需要用到。
在文件中添加:using Systemusing System.IOusing System.DirectoryServicesusing System.Reflectionusing System.Datausing System.Data.SqlClientusing System.Configuration.Installusing System.Managementusing System.Collectionsusing Microsoft.Win32using System.Collections.Specialized如果编译的时候出错,请添加相关引用。
修改文件如下图:注意要手动添加 Installer !将 DBSQL.txt 文件放到此项目中,在属性中设置为“嵌入的资源”回到 MyWebSetup 项目,点击查看属性,可以设置安装文件到显示相关信息,如图选择文件系统,如图:然后:(在文件系统中,在属性里面可以设置安装程序默认到安装路径)添加一个叫 bin 文件夹并添加在生成网站时 bin 目录下的 dll 文件,如图:在应用程序文件夹下在生成网站时目录下的文件,添加后如图:选择“用户界面编辑器”,添加两个文本框 A 和 B , A 将作为安装新站点后的 IIS 设置,B 将作为数据库操作时的参数设置,调整位置后如下:调整 A 的属性,这里只选择了显示两个输入框,属性分别为 IISSERVER 和 PORT ,值为 localhost 和 9998 ,其他的你可以自己调整。
如图:文本框 B 的设置如下:OK ,文本框设置完毕。
当然,你还可以选择其他的多种文本框,如协议什么的。
打开自定义操作面板:然后:在 CustomActionData 中输入:/dbnameDBNAME /serverDBSERVERNAME /userUSERNAME /pwdPASSWORD /iisIISSERVER /portPORT /targetdirTARGETDIR这些参数就是文本框 A 和 B 上的输入框的值,在安装过程中可以获得,然后进行处理。
至此,基本的安装文件已经制作完毕。
进行生成,然后点击安装,可以看到文件已经复制到了相应到目录。
接下来就要接收参数对 IIS 和数据库进行处理。
打开 SetupClassLibrary 项目下的 MyInstaller.Designer.cs,修改此文件。
申明几个变量:private System.Data.SqlClient.SqlConnection sqlConnprivate System.Data.SqlClient.SqlCommand Commandprivate string DBNameprivate string ServerNameprivate string AdminNameprivate string AdminPwdprivate string iisprivate string portprivate string dirpublic static string VirDirSchemaName IIsWebVirtualDirprivate string _targetprivate DirectoryEntry _iisServerprivate ManagementScope _scopeprivate ConnectionOptions _connection连接数据库服务器到方法:region ConnectDatabase 连接数据库private bool ConnectDatabase if Command.Connection.State ConnectionState.Open try Command.Connection.Open catchException e return false return trueendregion如果不能正确连接数据库服务器,请检查你的连接字符串,或者将连接字符串写入文件查看。
不好意思,我不知道如何对这种安装部署程序进行 debug,sorry 咯!读取 SQL 文件的方法:region GetSql 从文件中读取 SQL,在读取包含 SQL 脚本的文件时需要用到,参考自 MSDNprivate string GetSqlstring Name try Assembly Asm Assembly.GetExecutingAssembly Stream strm Asm.GetManifestResourceStreamAsm.GetName.Name . Name StreamReader reader new StreamReaderstrm return reader.ReadToEnd catch Exception getException throw new ApplicationExceptiongetException.Message endregion可以将此需要执行的 SQL 脚本放在此文本中执行 SQL 语句的方法:region ExecuteSql 执行 SQL 语句,参考自 MSDNprivate void ExecuteSqlstring DataBaseName string sqlstring Command new System.Data.SqlClient.SqlCommandsqlstring sqlConn if ConnectDatabase try Command.Connection.ChangeDatabaseDataBaseName Command.ExecuteNonQuery finally Command.Connection.Close endregion创建数据库及数据库表:region CreateDBAndTable 创建数据库及数据库表,参考自 MSDNprotected bool CreateDBAndTablestring DBName bool Restult false try ExecuteSqlmaster USE MASTER IF EXISTS SELECT NAME FROM SYSDATABASES WHERENAME DBName DROP DATABASE DBName ExecuteSqlmaster CREATE DATABASE DBName ExecuteSqlDBName GetSqlDBSQL.txt Restult true Catch return Restultendregion从备份文件恢复数据库及数据库表region RestoreDB 从备份文件恢复数据库及数据库表////// 从备份文件恢复数据库及数据库表////// 数据库名/// 配件中数据库脚本资源的名称///protected bool RestoreDBstring DBName dir this.Context.Parameterstargetdir bool Restult f
上一篇:
WEB程序j技术与设计
下一篇:
白色姜花,略微开了