类型:转载 责任编辑:asp.net 日期:2007/05/23
热门软件下载:










页面导航:
正文内容:简介
microsoft visual studio .net中的web安装项目将internet信息服务的web文件夹的大多数常见设置作为文件属性予以公开;然而,并非所有在安装web应用程序时可能需要修改的设置或属性都被公开。例如,有必要关闭对
internet信息服务(iis)通过iis对象揭示了这些属性中的大多数。有关这些iis对象和属性的信息包含在visual studio .net文档中,通过在索引中搜索“iis
本文提供了使用托管安装程序类和visual basic.net的代码示例。该托管安装程序类的代码可以用visual studio .net所支持的任何语言编写的代码代替。如果不使用安装程序类,还可以使用脚本语言(如vbscript)编写自定义操作。脚本自定义操作的功能较弱,调试起来更为困难,但可将其用于公共语言运行库不可用的安装(例如,c++
代码示例使用语法“iisvdir.
安装过程中显示的“installation address”对话框使安装用户可以指定用于安装web应用程序的虚拟目录和端口。在“windows2000 server”和“windows server
所包含的附加示例,演示了如何在安装过程中显示一个对话框,使用户可以选择要设置的附加iis属性。
创建web项目
为了在部署期间修改iis设置,首先必须拥有要部署的web应用程序。您可以使用已用visual studio .net创建的任何web应用程序,或者您可以按照下面的说明创建一个空的web应用程序。
创建web应用程序项目
1.在file菜单上,选择new,然后单击project,将显示new project对话框。
2.在project types窗格中,选择visual basic或visual c#。
3.在templates窗格中,选择empty web project。
4.在location文本框中,指定要放置该web项目的url(包括您要为它提供的名称)。
5.单击ok按钮创建该web项目。
visual studio将连接到服务器,并且向项目节点中的解决方案资源管理器中添加相应的项目项。
使用托管安装程序类设置iis属性
托管安装程序类(也称为安装组件)使您可以设置将在部署应用程序时发生的自定义操作。在该示例中,使用了托管安装程序类来公开可设置iis
向web应用程序项目添加安装程序类
添加安装程序类
1.在project菜单上,选择
2.在
3.添加以下过程以覆盖基类的install过程:
public overrides sub install(byval statesaver
system.collections.idictionary)
dim strvdir
dim intservernum
me.findservernum(me.context.parameters.item("port"))
dim strobjectpath
system.environment.machinename & "/w3svc/" & _
intservernum.tostring & "/root/" & strvdir
dim iisvdir
gets the iis vdir object.
iisvdir = getiisobject(strobjectpath)
set the
iisvdir.
uses setinfo to save the settings to the server.
iisvdir.setinfo()
end sub
4.在install过程后且end class语句前添加以下函数:
public function findservernum(byval strport
const md_server_st
dim machinename
dim iisobjectpath
dim iisobject
dim childobject
dim childobjectname
dim servers
dim servernum
dim i
dim strbindings
dim strsvrport
dim bind
machinename = system.environment.machinename
iisobjectpath = "iis://" & machinename & "/w3svc"
iterates through the w3svc folder to get the name of
each child object.
iisobject = getiisobject(iisobjectpath)
for each childobject in iisobject
childobjectname = childobject.
childobjectname = right(childobjectname, len(childobjectname) _
- instrrev(childobjectname, "/"))
try
if the name can be converted to an integer (port number),
add it to the servers collection.
servernum = ctype(childobjectname, integer)
servers.
catch
if the name cannot be converted to an integer,
it isnt a port and can be ignored.
end try
next
iterates through each server, removing each inactive server
without the correct port.
for i = servers.count to 1 step -1
iisobjectpath = "iis://" & machinename & "/w3svc/" & _
servers(i)
iisobject = getiisobject(iisobjectpath)
gets the port number of the current iisobject.
bind
strbindings = bind
strsvrport = left(strbindings, instrrev(strbindings, _
":") - 1)
strsvrport = right(strsvrport, len(strsvrport) - _
instr(strsvrport, ":"))
determines if this is our server. iis can only have one
active port, so if the port is active it is the port where
the application is installed.
if strport = strsvrport then
if iisobject.serverstate = md_server_st
return servers(i)
end if
else
not the active port, so remove it from the
collection.
servers.remove(i)
end if
next
checks how many servers are left. if one, weve found it
otherwise, report an error.
select case servers.count
case 0
err.raise(9999, "findservernum", "no
" & "the requested port were found. port=" & strport & _
". ")
case 1
return servers(1)
case else
err.raise(9999, "findservernum", "more than one
servers with the requested port were found. port=" & _
strport & ". ")
end select
end function
private function getiisobject(byval strfullobjectpath
dim iisobject
try
iisobject = getobject(strfullobjectpath)
return iisobject
catch exp
err.raise(9999, "getiisobject", "error opening: " _
& strfullobjectpath & ". " & exp.message)
end try
end function
向解决方案添加web安装项目
可使用web安装项目,创建用于在web服务器上安装web应用程序的windows安装程序(.msi)文件。
添加web安装项目
1.在file菜单上,选择add project,然后选择new project。
2.在
该项目即被添加到解决方案资源管理器中,并且将打开文件系统编辑器。
3.在properties窗口中,选择productname属性,并键入web应用程序的名称。
向web安装项目添加项目输出
下一步是通过添加项目输出将web应用程序与web安装项目关联起来。这种情况下,项目输出包括web应用程序、所有内容文件以及托管安装程序类。
添加项目输出
1.在文件系统编辑器中,选择web
2.在
3.在
4.从该列表中选择primary output和content files组,然后单击ok按钮。
将安装程序类添加为自定义操作
通过自定义操作,可以在安装结束后运行代码,以执行安装程序无法完成的操作,例如设置web安装项目未公开的iis属性。在此情况下,将要运行的自定义操作是安装程序类,它包含在web应用程序项目的主输出中。
添加自定义操作
1.在解决方案资源管理器中选择web安装项目。
2.在view菜单上,选择editor,然后选择custom
3.在自定义操作编辑器中,选择install节点。在
4.在select item in project对话框中,双击web
5.选择primary output from web
配置自定义操作
为了设置iis属性,自定义操作需要知道将要安装的应用程序的虚拟目录和端口。这可以使用custom
配置自定义操作
1.在自定义操作编辑器中,选择在上一步中添加的自定义操作。
2.在properties窗口中,选择custom
这会指定custom
此时,您便准备好生成web安装项目,并可安装您的web应用程序了。下一部分将演示其他步骤,这可以让应用程序安装人员在安装过程中选择iis设置。
基于用户输入设置iis属性
本节基于上述步骤,进一步演示如何接受用户对iis设置输入的步骤。在此情况下,您将显示一个对话框,使用户可以决定是否启用
添加自定义用户界面对话框
自定义用户界面对话框用于在安装过程中收集用户输入。在此情况下,您将使用一个对话框向用户提供复选框。该对话框将在安装过程中恰好于installation
创建自定义安装对话框
1.在解决方案资源管理器中选择web安装项目。
2.在view菜单上,指向editor,然后选择user interface。
3.在用户界面编辑器中,选择install下的start节点。在
4.在
5.在
6.在"properties"窗口中,设置下列属性:
属性 设置 说明 bannertext web站点配置 指定要在该对话框的标题区显示的文本。 bodytext 选择该应用程序的iis设置 指定要在对话框的正文显示的文本。 checkbox1label 启用 a sp缓冲 指定对话框中第一个checkbox控件的标签文本。 checkbox 2visible false 隐藏第二个checkbox控件。 checkbox 3 visible false 隐藏第三个checkbox控件。 checkbox 4visible false 隐藏第四个checkbox控件。
编辑安装程序类代码
下一步是修改安装程序类中用于更新buffering属性的代码。
修改安装程序类
1.在解决方案资源管理器中选择安装程序类(installer.vb),然后按f7打开代码编辑器。
2.在安装过程中,找到内容为“dim iisvdir
3.在该行下面,紧接着添加以下代码:
dim blnbuffering
if context.parameters.item("buffering") = "1" then
blnbuffering = true
else
blnbuffering = false
end if
4.找到内容为“iisvdir.
5.在该行下面,紧接着添加以下代码:
iisvdir.
修改自定义操作
最后一步是修改自定义操作的custom
修改自定义操作
1.在解决方案资源管理器中选择web安装项目,然后打开自定义操作编辑器。
2.在自定义操作编辑器中,选择在前面添加的自定义操作。
3.在properties窗口中,选择custom
这会将复选框([checkbox
此时,您再一次准备好生成web安装项目并安装您的web应用程序。在安装过程中,您将看到自定义的web site configuration对话框,其中包含enable
小结
尽管web安装项目并未公开所有iis属性,但通过自定义操作来设置iis属性还是比较容易的。虽然本文只演示了两个属性,但您可以修改前面的代码来处理任何iis对象的任何属性。