




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
如何用如何用 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 System using System IO using System DirectoryServices using System Reflection using System Data using System Data SqlClient using System Configuration Install using System Management using System Collections using Microsoft Win32 using System Collections Specialized 如果编译的时候出错 请添加相关引用 修改文件如下图 注意要手动添加 Installer 将 DBSQL txt 文件放到此项目中 在属性中设置为 嵌入的资源 回到 MyWebSetup 项目 点击查看属性 可以设置安装文件到显示相关信息 如图 选择文件系统 如图 然后 在文件系统中 在属性里面可以设置安装程序默认到安装路径 添加一个叫 bin 文件夹并添加在生成网站时 bin 目录下的 dll 文件 如图 在应用程序文件夹下在生成网站时目录下的文件 添加后如图 选择 用户界面编辑器 添加两个文本框 A 和 B A 将作为安装新站点后的 IIS 设置 B 将作为数 据库操作时的参数设置 调整位置后如下 调整 A 的属性 这里只选择了显示两个输入框 属性分别为 IISSERVER 和 PORT 值为 localhost 和 9998 其他的你可以自己调整 如图 文本框 B 的设置如下 OK 文本框设置完毕 当然 你还可以选择其他的多种文本框 如协议什么的 打开自定义操作面板 然后 在 CustomActionData 中输入 dbname DBNAME server DBSERVERNAME user USERNAME pwd PASSWORD iis IISSERVER port PORT targetdir TARGETDIR 这些参数就是文本框 A 和 B 上的输入框的值 在安装过程中可以获得 然后进行处理 至此 基本的安装文件已经制作完毕 进行生成 然后点击安装 可以看到文件已经复制到了相应到目录 接下来就要接收参数对 IIS 和数据库进行处理 打开 SetupClassLibrary 项目下的 MyInstaller Designer cs 修改此文件 申明几个变量 private System Data SqlClient SqlConnection sqlConn private System Data SqlClient SqlCommand Command private string DBName private string ServerName private string AdminName private string AdminPwd private string iis private string port private string dir public static string VirDirSchemaName IIsWebVirtualDir private string target private DirectoryEntry iisServer private ManagementScope scope private ConnectionOptions connection 连接数据库服务器到方法 region ConnectDatabase 连接数据库 private bool ConnectDatabase if Command Connection State ConnectionState Open try Command Connection Open catch Exception e return false return true endregion 如果不能正确连接数据库服务器 请检查你的连接字符串 或者将连接字符串写入文件查看 不好意思 我不知道如何对这种安装部署程序进行 debug sorry 咯 读取 SQL 文件的方法 region GetSql 从文件中读取 SQL 在读取包含 SQL 脚本的文件时需要用到 参考自 MSDN private string GetSql string Name try Assembly Asm Assembly GetExecutingAssembly Stream strm Asm GetManifestResourceStream Asm GetName Name Name StreamReader reader new StreamReader strm return reader ReadToEnd catch Exception getException throw new ApplicationException getException Message endregion 可以将此需要执行的 SQL 脚本放在此文本中 执行 SQL 语句的方法 region ExecuteSql 执行 SQL 语句 参考自 MSDN private void ExecuteSql string DataBaseName string sqlstring Command new System Data SqlClient SqlCommand sqlstring sqlConn if ConnectDatabase try Command Connection ChangeDatabase DataBaseName Command ExecuteNonQuery finally Command Connection Close endregion 创建数据库及数据库表 region CreateDBAndTable 创建数据库及数据库表 参考自 MSDN protected bool CreateDBAndTable string DBName bool Restult false try ExecuteSql master USE MASTER IF EXISTS SELECT NAME FROM SYSDATABASES WHERE NAME DBName DROP DATABASE DBName ExecuteSql master CREATE DATABASE DBName ExecuteSql DBName GetSql DBSQL txt Restult true Catch return Restult endregion 从备份文件恢复数据库及数据库表 region RestoreDB 从备份文件恢复数据库及数据库表 从备份文件恢复数据库及数据库表 数据库名 配件中数据库脚本资源的名称 protected bool RestoreDB string DBName dir this Context Parameters targetdir bool Restult false string MSQL RESTORE DATABASE DBName FROM DISK dir data bak WITH MOVE Test TO c DBName mdf MOVE Test log TO c DBName ldf try ExecuteSql master USE MASTER IF EXISTS SELECT NAME FROM SYSDATABASES WHERE NAME DBName DROP DATABASE DBName ExecuteSql master MSQL Restult true finally 删除备份文件 try File Delete dir data bak catch return Restult endregion 这里可以到注册表读取 SQL Server 的安装路径 把恢复后的数据库文件放到 data 目录地下 在本例中 只是实现了恢复 并未进行标准的操作 其中 Test 和 Test log 时备份时数据库的文件信息 如果想要从 备份文件中恢复 请把文件包含到项目里并且设置和 DBSQL txt 一样 嵌入到程序里 最后执行删除 不过我想应该有办法不把文件先安装到目标机器上 而是有方法想读取 DBSQL txt 文件一样 直接恢复 数据库 不过确实没想到办法 失败 网站安装好后 需要设置 web config 文件 这里只涉及到连接字符串到设置 其他的可以同理修改 从备份文件恢复数据库及数据库表 region WriteWebConfig 修改 web config 的连接数据库的字符串 private bool WriteWebConfig System IO FileInfo FileInfo new System IO FileInfo this Context Parameters targetdir web config if FileInfo Exists throw new InstallException Missing config file this Context Parameters targetdir web config System Xml XmlDocument xmlDocument new System Xml XmlDocument xmlDocument Load FileInfo FullName bool FoundIt false foreach System Xml XmlNode Node in xmlDocument configuration appSettings if Node Name add if Node Attributes GetNamedItem key Value ConnectionString Node Attributes GetNamedItem value Value String Format Persist Security Info False Data Source 0 database 1 User ID 2 Password 3 Packet Size 4096 Pooling true Max Pool Size 100 Min Pool Size 1 ServerName DBName AdminName AdminPwd FoundIt true if FoundIt throw new InstallException Error when writing the config file web config xmlDocument Save FileInfo FullName return FoundIt endregion 从备份文件恢复数据库及数据库表 region WriteRegistryKey 写注册表 安装部署中 直接有一个注册表编辑器 可以在那里面设置 private void WriteRegistryKey 写注册表 RegistryKey hklm Registry LocalMachine RegistryKey cqfeng hklm OpenSubKey SOFTWARE true RegistryKey F cqfeng CreateSubKey cqfeng F SetValue FilePath kkkk endregion 操作 IIS 建立网站等 可参考 用 VS2005 制作网页对 IIS 进行操作 region Connect 连接 IIS 服务器 public bool Connect if iis null return false try iisServer new DirectoryEntry IIS iis W3SVC 1 target iis connection new ConnectionOptions scope new ManagementScope iis root MicrosoftIISV2 connection scope Connect catch return false return IsConnected public bool IsConnected if target null connection null scope null return false return scope IsConnected endregion region IsWebSiteExists 判断网站是否已经存在 public bool IsWebSiteExists string serverID try string siteName W3SVC serverID ManagementObjectSearcher searcher new ManagementObjectSearcher scope new ObjectQuery SELECT FROM IIsWebServer null ManagementObjectCollection webSites searcher Get foreach ManagementObject webSite in webSites if string webSite Properties Name Value siteName return true return false catch return false endregion region GetNextOpenID 获得一个新的 ServerID private int GetNextOpenID DirectoryEntry iisComputer new DirectoryEntry IIS localhost w3svc int nextID 0 foreach DirectoryEntry iisWebServer in iisComputer Children string sname iisWebServer Name try int name int Parse sname if name nextID nextID name catch return nextID endregion region CreateWebsite 添加网站 public string CreateWebSite string serverID string serverComment string defaultVrootPath string HostName string IP string Port try ManagementObject oW3SVC new ManagementObject scope new ManagementPath IIsWebService W3SVC null if IsWebSiteExists serverID return Site Already Exists ManagementBaseObject inputParameters oW3SVC GetMethodParameters CreateNewSite ManagementBaseObject serverBinding new ManagementBaseObject 1 serverBinding 0 CreateServerBinding HostName IP Port inputParameters ServerComment serverComment inputParameters ServerBindings serverBinding inputParameters PathOfRootVirtualDir defaultVrootPath inputParameters ServerId serverID ManagementBaseObject outParameter null outParameter oW3SVC InvokeMethod CreateNewSite inputParameters null 启动网站 string serverName W3SVC serverID ManagementObject webSite new ManagementObject scope new ManagementPath IIsWebServer serverName null webSite InvokeMethod Start null return string outParameter Properties ReturnValue Value catch Exception ex return ex Message public ManagementObject CreateServerBinding string HostName string IP string Port try ManagementClass classBinding new ManagementClass scope new ManagementPath ServerBinding null ManagementObject serverBinding classBinding CreateInstance serverBinding Properties Hostname Value HostName serverBinding Properties IP Value IP serverBinding Properties Port Value Port serverBinding Put return serverBinding catch return null endregion 好了 准备工作已经做完 现在开始写最重要的 Install 方法了 整个方法写完后如下 region Install 安装 安装数据库 public override void Install IDictionary stateSaver base Install stateSaver dir this Context Parameters dir DBName this Context Parameters DBNAME ToString ServerName this Context Parameters server ToString AdminName this Context Parameters user ToString AdminPwd this Context Parameters pwd ToString iis this Context Parameters iis ToString port this Context Parameters port ToString 写入获取的安装程序中的变量 此段代码为调试用可以不添加 this sqlConn ConnectionString Packet size 4096 User ID AdminName Data Source ServerName Password AdminPwd Persist Security Info False Integrated Security false 执行 SQL 安装数据库 可选择时恢复或者时直接创建 if CreateDBAndTable DBName throw new ApplicationException 创建数据库时出现严重错误 从备份数据库文件恢复数据库 if RestoreDB DBName throw new ApplicationException 恢复数据库时出现严重错误 添加网站 Connect string serverID GetNextOpenID ToString string serverComment websitenName 下面的信息为测试 可以
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 平角与周角课件
- 2025年光伏发电在海洋工程中的应用与效益分析报告
- 农发行金华市永康市2025秋招无领导小组面试案例库
- 农发行信阳市平桥区2025秋招无领导小组面试案例库
- 夜间飞行器秘密
- 2025年新能源行业工业互联网在新能源行业智能化分析中的应用报告
- 农产品加工技术试题
- 农发行鄂尔多斯市达拉特旗2025秋招数据分析师笔试题及答案
- 农发行忻州市偏关县2025秋招笔试性格测试题专练及答案
- 农发行巴中市通江县2025秋招群面模拟题及高分话术
- 2025年中国建设银行个人信用贷款合同
- 园林工程量计算培训
- 2025年全国网约车试题及答案
- 卫生系统信息安全培训课件
- 姿态礼仪培训展示
- 文物建筑勘查设计取费标准(2020年版)
- 钢筋混凝土拆除施工方案
- 道路运输行业安全培训课件
- 2025年成考专升本《生态学基础》试题与答案
- 大模型+智能交通高效出行与城市治理可行性分析报告
- 2025年民事诉讼法试题及答案
评论
0/150
提交评论