VS.NET2005 /2008web程序自定义安装包的制作
作者: 发布时间:2007-11-24 16:12:27 文章来源: |
利用VS2005的“Web安装项目”建立安装包很难对安装过程进行详细控制,因此直接采用“安装项目”来建立web程序安装包。我们需要安装过程中自动创建虚拟目录,并且可以修改数据库连接字符串,假设我们在安装过程中需要用户修改web.config文件里连接字符串其形式如下: <configuration> <connectionStrings> ... 则建立安装包的过程如下: 1)发布网站:右键点击web项目,在弹出菜单里点击“发布网站”将它发布到本地机器。 2)新建安装项目:从菜单处依次点 文件->新建->文件->项目->其他项目类型->安装和部署->安装项目,输入名称与位置,并确定。在项目属性里设置相应的说明内容。 3)在启动项里添加文本框:右键点击项目,在弹出菜单里选择视图->用户界面,出现用户界面的树形结构。右键点击“启动”节点,添加“文本框(A)”与“文本框(B)”,并将它们移动到“安装文件夹”之上。这两个界面用来接收用户安装过程中输入的“web服务地址与虚拟目录”和“数据库连接字符串”。两个文本框的属性设置如下: 文本框(A) BannerText:网站设置 BodyText:设置web服务地址与虚拟目录 Edit1Label:web服务器: Edit1Property:IISSERVER //这个是自己起的名字 Edit1Value:localhost //此为默认值,可不设置 Edit1Visible:True Edit2Label:虚拟目录: Edit2Property:VIRTUALDIR //这个是自己起的名字 Edit2Value:testWeb //此为默认值,可不设置 Edit2Visible:True Edit3Visible:False Edit4Visible:False 文本框(B) BannerText:数据库设置 BodyText:设置数据库连接字符串 Edit1Label:数据库服务器: Edit1Property:DBSERVERNAME //这个是自己起的名字 Edit1Value:10.78.25.23 //此为默认值,可不设置 Edit1Visible:True Edit2Label:数据库名称: Edit2Property:DBNAME //这个是自己起的名字 Edit2Value:testDataBase //此为默认值,可不设置 Edit2Visible:True Edit3Label:登录帐号: Edit3Property:USERNAME //这个是自己起的名字 Edit3Value:sa //此为默认值,可不设置 Edit3Visible:True Edit4Label:登录密码: Edit4Property:PASSWORD //这个是自己起的名字 Edit4Value: Edit4Visible:True 4)建立安装程序类:新建一c#类库项目“SetupClassLibrary”,然后右键 添加->新建项->安装程序类,建立一安装程序类如下: using System; namespace SetupClassLibrary private string dbserver; private string user; private string pwd; private string iis; private string physicaldir; private string virtualdir; public static string VirDirSchemaName = "IIsWebVirtualDir"; private string _target; private DirectoryEntry _iisServer; private ManagementScope _scope; private ConnectionOptions _connection; public MyInstaller() WriteWebConfig 修改web.config的连接数据库的字符串 WriteWebConfig 修改web.config的连接数据库的字符串 private void WriteWebConfig() //修改连接字符串 } } #endregion 创建虚拟目录 创建虚拟目录 private void CreateVirtualDir() DirectoryEntry tbEntry = root.Children.Add(virtualdir, root.SchemaClassName); } #endregion Install 从这里开始启动安装 Install 从这里开始启动安装 public override void Install(IDictionary stateSaver) base.Install(stateSaver); physicaldir = this.Context.Parameters["targetdir"].ToString(); virtualdir = this.Context.Parameters["virtualdir"].ToString(); dbname = this.Context.Parameters["dbname"].ToString(); dbserver = this.Context.Parameters["dbserver"].ToString(); user = this.Context.Parameters["user"].ToString(); pwd = this.Context.Parameters["pwd"].ToString(); iis = this.Context.Parameters["iis"].ToString(); // 添加网站 // 修改web.config } #endregion Uninstall 删除 Uninstall 删除 public override void Uninstall(IDictionary savedState) else } #endregion } 5)添加项目输出: 编译生成“SetupClassLibrary” 然后右键单击2)中建立的安装项目 添加->项目输出中选择“SetupClassLibrary”,选中“主输出”,单击“确定”。这样你可以在解决方案安装项目树中看见多了“主输出来自SetupClassLibrary(活动)”节点。 再右键此安装项目 视图->自定义操作 中选择“安装”节点,右键 “添加自定义操作”,进入“应用程序文件夹”,选中“主输出来自SetupClassLibrary(活动)”,单击“确定。 选中“安装”下的“主输出来自SetupClassLibrary(活动)”节点,在其属性窗口中设置CustomActionData 的值为 /dbname=[DBNAME] /dbserver=[DBSERVERNAME] /user=[USERNAME] /pwd=[PASSWORD] /iis=[IISSERVER] /virtualdir=[VIRTUALDIR] /targetdir="[TARGETDIR]"",这是设置文本框(A)和文本框(B)中的输入与安装程序类中要访问的变量之间的对应关系,其中 targetdir="[TARGETDIR]""代表应用程序安装目录(注意:各个对应关系之间必须用空格隔开)。 6)添加文件:这一步,我们将发布网站时生成的文件夹全部克隆到安装项目中。 右键安装项目,视图->文件系统 在“应用程序文件夹”下按发布网站时生成的文件夹里的结构添加文件夹与文件。 说明: 1.这些文件都需要我们从发布网站的文件夹里添加进来,比如一般需要建立对应的“bin”文件夹,并在里面添加对应的程序集文件,而且一般我们会在“应用程序文件夹”根下添加web.config文件。 2.这里的文件将被复制到目标计算机上,此安装项目将在目标计算机上建立虚拟目录指向此文件夹。 7)编译生成,OK! 到安装项目的debug或者release目录下可看见生成的安装包。 |