監(jiān)理公司管理系統(tǒng) | 工程企業(yè)管理系統(tǒng) | OA系統(tǒng) | ERP系統(tǒng) | 造價咨詢管理系統(tǒng) | 工程設計管理系統(tǒng) | 甲方項目管理系統(tǒng) | 簽約案例 | 客戶案例 | 在線試用
X 關閉

在安裝期間將應用程序重定向到不同的XML Web services

申請免費試用、咨詢電話:400-8352-114

AMTeam.org

在安裝期間將應用程序重定向到不同的XML Web services


Steve Hoag

Visual Studio Team

Microsoft Corporation

2001 年 11 月

摘要:本文介紹了如何在 Visual Basic? .NET 中創(chuàng)建一個 Web 應用程序,通過使用 URL Behavior 屬性、Installer 類和 Web 安裝程序項目將該應用程序重定向到不同的 XML Web services。

簡介

在開發(fā)以 XML Web services 為目標的應用程序時,通常應該以 Web 服務器上已安裝的 XML Web services 為目標。這是一個準則,不過在部署應用程序的產(chǎn)品版本時,有時也需要以其他 XML Web services 為目標。例如,您可能已將開發(fā)服務器上的 XML Web services 的測試版本作為目標,但是完成的應用程序需要將另一個服務器上的 XML Web services 的安裝版本作為目標。您可能還希望安裝該應用程序的人員在安裝期間可以選擇 XML Web services 的版本,例如,Intranet 上的版本或者是可以從防火墻外部進行訪問的版本。

本文介紹了如何創(chuàng)建可以重定向到不同的 XML Web services 的 Web 應用程序。創(chuàng)建過程包括:

指定 URL Behavior 屬性,以在運行時查找 XML Web services。

添加能在安裝結(jié)束時執(zhí)行自定義操作的安裝組件。

使用安裝程序項目為應用程序創(chuàng)建一個包含自定義用戶界面的安裝程序。

第一步是創(chuàng)建包含對 XML Web services 進行 Web 引用的 Web 應用程序。有關創(chuàng)建 Web 應用程序的詳細信息,請參閱 Visual Studio? .NET 文檔中的 Walkthrough: Creating an XML Web services Using Visual Basic or Visual C#(英文)。

將 URL Behavior 設置為 Dynamic

為了在運行時查找 XML Web services,應用程序?qū)⒋鎯υ?XML Web services 的 URL。Web 引用(用于 XML Web services)的 URL Behavior 屬性決定 URL 的存儲位置。如果 URL Behavior 屬性被設置為 Static(默認值),則 URL 將被硬編碼為 Web 引用的一部分。如果 URL Behavior 屬性被設置為 Dynamic,則指定 URL 的條目將被添加到該應用程序的 Web.config 文件的 appSettings 段。

將 URL Behavior 屬性設置為 Dynamic

在 Solution Explorer(解決方案資源管理器)中,展開 Web References(Web 引用)節(jié)點并選擇對 XML Web services 的引用。

在 Properties(屬性)窗口中,選擇 URL Behavior 屬性并將其更改為 Dynamic。

在 Solution Explorer(解決方案資源管理器)中,選擇 Web.config 文件并雙擊以打開該文件。

在該文件末尾,應該能夠找到一個 段,其中包含指定 XML Web services 名稱的關鍵字和指定 URL 的值。例如,對于能夠訪問本地計算機上的 MyWebService 的名為 MyWebApp 的應用程序,其外觀類似于:


value=http://localhost/MyWebService/Service1.asmx/>

下一步是添加 Installer 類,用于在安裝期間修改 .config 文件。

添加 Installer 類

Installer 類(也稱為安裝組件)是在安裝過程中被當作自定義操作調(diào)用的 .NET 框架類。在這種情況下,您需要添加 Installer 類來代替 Install 方法,以添加修改 .config 文件的代碼。有關 Installer 類的詳細信息,請參閱 Visual Studio .NET 文檔中的“Introduction to Installation Components”。

添加 Installer 類

在 Project(項目)菜單中,選擇 Add New Item(添加新項)。

在 Add New Item(添加新項)對話框中,選擇 Installer Class(Installer 類)并將 Name(名稱)更改為 WebServiceInstaller。

單擊 Open(打開)后,該類將被添加到您的項目,并打開包含 Installer 類的設計器。

雙擊設計器以打開 Code Editor(代碼編輯器)。

在 Installer 類模塊(位于 End Class 聲明的上面)的底部添加用于 Install 方法的以下代碼:

Public Overrides Sub Install(ByVal stateSaver As
System.Collections.IDictionary)
' 獲取在 CustomActionData 中傳遞的參數(shù)。
Dim installlog As New System.IO.StreamWriter("Installation.log")
installlog.AutoFlush = True
Try
Dim ProvidedName As String
=Me.Context.Parameters.Item("ServerName")
Dim SvcName As String = Me.Context.Parameters.Item("ServiceName")

installlog.WriteLine("開始編輯配置文件")

If ProvidedName = "" Or SvcName = "" Then
Throw New InstallException("未指定參數(shù)")
End If

' 使用反射查找配置文件的位置。
Dim Asm As System.Reflection.Assembly =
System.Reflection.Assembly.GetExecutingAssembly
Dim strConfigLoc As String
strConfigLoc = Asm.Location

Dim strTemp As String
strTemp = strConfigLoc
strTemp = strTemp.Remove(strTemp.LastIndexOf(""),
Len(strTemp) – strTemp.LastIndexOf(""))
strTemp = strTemp.Remove(strTemp.LastIndexOf(""),
Len(strTemp) – strTemp.LastIndexOf(""))

Dim FileInfo As System.IO.FileInfo =
New System.IO.FileInfo(strTemp & "web.config")

installlog.WriteLine("文件信息:" & strTemp)

If Not FileInfo.Exists Then
Throw New InstallException("缺少配置文件")
End If

' 將配置文件加載到 XML DOM。
Dim XmlDocument As New System.Xml.XmlDocument()
XmlDocument.Load(FileInfo.FullName)

' 找到正確的節(jié)點并將其更改為新值。
Dim Node As System.Xml.XmlNode
Dim FoundIt As Boolean = False
For Each Node In
XmlDocument.Item("configuration").Item("appSettings")
' 忽略所有注釋。
If Node.Name = "add" Then
If Node.Attributes.GetNamedItem("key").Value =
"appname.servername.service" Then
' 注意,“Service1.asmx”應當被替換為
' Web service 文件的實際名稱。
Node.Attributes.GetNamedItem("value").Value =
"http:\" & ProvidedName & "" &
SvcName & "Service1.asmx"
FoundIt = True
End If
End If
Next Node

If Not FoundIt Then
Throw New InstallException("配置文件不
包含 ServerName 段")
End If

' 編寫新的配置文件。
XmlDocument.Save(FileInfo.FullName)

Finally
installlog.WriteLine("結(jié)束對配置文件的編輯")
installlog.Close()
End Try

End Sub

以上代碼首先創(chuàng)建用于記錄自定義操作進度的安裝日志文件。System.Reflection 命名空間用于查找所安裝的程序集并查找關聯(lián)的 .config 文件。XML 文檔模型用于遍歷 .config 文件,直至找到 appSettings 段。找到關鍵字 appname.servername.service 后,其關聯(lián)值將發(fā)生更改以包含傳入的參數(shù),從而將應用程序重定向為使用新的 XML Web services。

在 Solution Explorer(解決方案資源管理器)中,選擇 Web.config 文件并雙擊以打開該文件。

在 appSettings 段中復制 XML Web services 的關鍵字值。關鍵字的形式為 appname.servername.service,其中 appname 是應用程序的名稱,servername 是 XML Web services 所在的服務器,service 是 XML Web services 的名稱。

在 Code Editor(代碼編輯器)中打開 Installer 類模塊,并使用上一步中復制的值替換 appname.servername.service。

下一步是為應用程序添加一個安裝程序項目。

添加安裝程序項目

安裝程序項目用于為應用程序創(chuàng)建安裝程序。安裝程序項目以 Windows 安裝程序技術為基礎,包含在安裝期間運行自定義操作以及自定義安裝用戶界面等多項功能。有關安裝程序項目的詳細信息,請參閱 Visual Studio .NET 文檔中的 Deploying Applications and Components(英文)。

添加安裝程序項目

在 File(文件)菜單中,指向 Add Project(添加項目),然后單擊 New Project(新建項目)。

在 Add New Project(添加新項目)對話框中,選擇 Project Types(項目類型)窗格中的 Setup and Deployment Projects(安裝和部署項目)節(jié)點。

在 Templates(模板)窗格中,選擇 Web Setup Project(Web 安裝程序項目)并單擊 OK(確定)。

該項目將被添加到解決方案中,且 File System Editor(文件系統(tǒng)編輯器)將被打開。

在 Properties(屬性)窗口中,選擇 ProductName 屬性并將其名稱設置為與應用程序的名稱相同。

在 File System Editor(文件系統(tǒng)編輯器)中,選擇 Web Application Folder(Web 應用程序文件夾)。

在 Action(操作)菜單中,指向 Add(添加),然后單擊 Project Output(項目輸出)。

在 Add Project Output Group(添加項目輸出組)對話框中,選擇應用程序項目,然后選擇 Primary Output(主輸出)和 Content Files(內(nèi)容文件),并單擊 OK(確定)。

下一步是添加將在安裝結(jié)束時運行的自定義操作。

將 Installer 類添加為自定義操作

自定義操作用于在安裝結(jié)束時運行代碼,以便執(zhí)行安裝過程中無法處理的操作。自定義操作的代碼可以包含在 .dll 文件、.exe 文件、腳本文件或程序集文件中。有關自定義操作的詳細信息,請參閱 Visual Studio .NET 文檔中的 Custom Actions Management in Deployment(英文)。

將 Installer 類添加為自定義操作

在 Solution Explorer(解決方案資源管理器)中,選擇 Setup Project(安裝程序項目)。

在 View(視圖)菜單中,指向 Editor(編輯器),然后單擊 Custom Actions(自定義操作)。

Custom Actions Editor(自定義操作編輯器)將打開。

在 Custom Actions Editor(自定義操作編輯器)中,選擇 Install(安裝)節(jié)點。

在 Action(操作)菜單中,選擇 Add Custom Action(添加自定義操作)。

雙擊 Web Application Folder(Web 應用程序文件夾),然后選擇 Primary output(主輸出),并單擊 OK(確定)。

在 Properties(屬性)窗口中,選擇 InstallerClass 屬性并確保將其設置為 true。

選擇 CustomActionData 屬性并輸入以下文本:/ServerName=[EDITA1] /ServiceName=[EDITA2]

CustomActionData 屬性提供兩個被傳遞到自定義操作的參數(shù),參數(shù)之間用空格分隔。

下一步是添加用戶界面以便在安裝過程中輸入信息。

添加用戶界面對話框

安裝過程中將顯示用戶界面對話框以便從用戶收集信息。有關用戶界面對話框的詳細信息,請參閱 Visual Studio .NET 文檔中的 User Interface Management in Deployment(英文)。

添加自定義用戶界面對話框

在 Solution Explorer(解決方案資源管理器)中,選擇 Setup Project(安裝程序項目)。

在 View(視圖)菜單中,指向 Editor(編輯器),然后單擊 User Interface(用戶界面)。

在 User Interface Editor(用戶界面編輯器)中,選擇 Start(開始)節(jié)點。

在 Action(操作)菜單中,選擇 Add Dialog(添加對話框)。

在 Add Dialog(添加對話框)對話框中,選擇 Textboxes (A)(文本框 [A])對話框,然后單擊 OK(確定)。

在 Action(操作)菜單中,選擇 Move Up(上移)并重復執(zhí)行該操作,直到 Textboxes (A)(文本框 [A])對話框位于 Installation Address(安裝地址)對話框的上方。

在 Properties(屬性)窗口中,設置以下屬性:

屬性 BannerText 輸入服務器名稱和服務名稱 Edit1Label 服務器名稱: Edit1Value Localhost

注意:此值指定默認服務器。您可以在此處輸入自己的默認服務器名稱。
Edit2Label 服務名稱: Edit2Value <服務的名稱> Edit3Visible false Edit4Visible false

注意:Edit1Property 屬性被設置為“EDITA1”,Edit2Property 屬性被設置為“EDITA2”。這些值與在 Custom Actions Editor(自定義操作編輯器)的 CustomActionData 屬性中輸入的值相對應。如果用戶在安裝期間在這些編輯控件中輸入文本,CustomActionData 屬性將自動傳遞這些值。

生成和安裝

最后一步是生成安裝程序項目以創(chuàng)建安裝程序,然后將應用程序安裝到目標服務器上。

生成安裝程序項目

在 Build(生成)菜單中,選擇 Build Projectname(生成 Projectname),其中 Projectname 是您的安裝程序項目的名稱。

將應用程序部署到開發(fā)計算機的 Web 服務器上

在 Solution Explorer(解決方案資源管理器)中,選擇安裝程序項目,然后在 Project(項目)菜單中選擇 Install(安裝)。

將應用程序部署到其他計算機的 Web 服務器上

在 Windows 資源管理器中,瀏覽到項目目錄,并找到生成的安裝程序。默認路徑為 Documents and settings您的登錄名安裝程序項目名項目配置產(chǎn)品名.msi。默認的項目配置為 Debug。

將目錄中的 .msi 文件以及所有其他文件和子目錄都復制到 Web 服務器。

在 Web 服務器上,雙擊 Setup.exe 文件以運行安裝程序。

總結(jié)

我們可以看出,重定向應用程序以使用不同的 XML Web services 的過程并不難。雖然本例使用以 XML Web services 為目標的 Web 應用程序,但您可以輕松地將其更改為用于 Windows 應用程序:只需要使用 app.config 文件代替 Web.config 文件,并使用安裝程序項目代替 Web 安裝程序項目。除此以外,過程完全相同。

本文介紹了幾項新技術:使用 URL Behavior 屬性在配置文件中存儲信息,使用 Installer 類在安裝期間執(zhí)行操作,以及使用 CustomActionData 屬性在安裝過程中存儲用戶信息。

發(fā)布:2007-03-25 10:34    編輯:泛普軟件 · xiaona    [打印此頁]    [關閉]
上海OA系統(tǒng)
聯(lián)系方式

成都公司:成都市成華區(qū)建設南路160號1層9號

重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務大廈18樓

咨詢:400-8352-114

加微信,免費獲取試用系統(tǒng)

QQ在線咨詢