演练:使用部署清单部署文档级自定义项 (2003 System)
更新:2007 年 11 月
适用对象 |
---|
本主题中的信息仅适用于指定的 Visual Studio Tools for Office 项目和 Microsoft Office 版本。 项目类型
Microsoft Office 版本
有关更多信息,请参见按应用程序和项目类型提供的功能。 |
此演练演示如何将 Microsoft Office Excel 或 Microsoft Office Word 的文档级自定义项部署到服务器上的网络共享。演练结束时,您将可以从您的开发计算机运行服务器上的解决方案。有关文档级自定义项的更多信息,请参见 文档级自定义项的体系结构。
在生产环境中,Visual Studio Tools for Office 解决方案通常会先发布到测试服务器,在获得 IT 部门批准以后,重新部署到生产服务器。在此演练中,您将解决方案发布到您的开发计算机上的临时位置,然后将解决方案从临时位置重新部署到服务器。有关部署解决方案的选项的更多信息,请参见 部署模型 (2003 System)。
本演练阐释以下任务:
使用“发布向导”将解决方案发布到您的开发计算机上的某个位置。
手动将解决方案从您的本地计算机重新部署到服务器上的网络共享。
以编程方式修改文档中嵌入的应用程序清单,以指向新的部署清单位置。
编辑部署清单以指向外部应用程序清单的新位置。
编辑外部应用程序清单以指向新的程序集位置和部署清单。
先决条件
您需要以下组件来完成本演练:
Visual Studio Tools for Office(Visual Studio 2008 专业版和 Visual Studio Team System 的可选组件)。
Microsoft Office Word 2003 或 Microsoft Office Excel 2003。
说明: 此演练假定您部署的是 Word 解决方案。如果您要使用 Excel 解决方案来执行演练,请在所有代码和 XML 示例中使用您的 Excel 项目名替换 Word 项目名。
对用于部署的网络服务器的访问权。此演练假定您正在将解决方案重新部署到网络共享 \\DeployServer\ShareFolder。
在开发计算机上具有管理员特权,因此您可以设置网络位置的安全策略。
创建项目
在此步骤中,创建一个 Word 文档项目。
创建新项目
使用适用于 Office 2003 的项目模板创建一个名为 WordDeployment 的 Word 文档项目。
在向导中,选择“创建新文档”。有关更多信息,请参见 如何:创建 Visual Studio Tools for Office 项目。
Visual Studio 在设计器中打开新的 Word 文档,并将 WordDeployment 项目添加到“解决方案资源管理器”。
添加文档背后的代码
项目需要一些代码,以便您能够在打开文档时验证解决方案是否在工作。对于此演练,向文档的 Startup 事件处理程序中添加一个消息框。
将消息框添加到初始化事件
在“解决方案资源管理器”中右击“ThisDocument.vb”或“ThisDocument.cs”,再单击快捷菜单上的“查看代码”。
将以下代码添加到 ThisDocument 类中的 Startup 事件处理程序,以在初始化期间显示消息框。
Private Sub ThisDocument_Startup(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles Me.Startup MessageBox.Show("The document is deployed correctly.") End Sub
private void ThisDocument_Startup(object sender, System.EventArgs e) { MessageBox.Show("The document is deployed correctly."); }
按 F5 运行项目。
Word 启动并出现消息框。
关闭消息框。
退出 Word。
发布解决方案
此过程的第一个部署步骤中是将解决方案发布到本地计算机上的临时位置。
发布解决方案
右击“解决方案资源管理器”中的项目节点。
单击快捷菜单上的“发布”。
出现“发布向导”。
在“指定发布此应用程序的位置”框中键入 C:\TestDeploy。
单击“完成”。
解决方案文档和部署清单复制到 C:\TestDeploy。解决方案程序集、更新的应用程序清单以及解决方案文档和部署清单的副本复制到 C:\TestDeploy\WordDeployment_1.0.0.0。有关更多信息,请参见 部署文档级自定义项 (2003 System)。
在“文件”菜单上单击“关闭解决方案”,以在 Visual Studio 中关闭 WordDeployment 解决方案。
说明: 程序集还没有执行权限,因此如果您尝试运行该解决方案,它将引发错误。您将在稍后的步骤中更新安全策略以授予该程序集完全信任权限。
当您发布一个解决方案时,解决方案文档中嵌入的应用程序清单会指向部署清单的完整路径。如果您将解决方案文件重新部署到另一个位置,您必须更新嵌入的应用程序清单以指向部署清单的新位置。您还必须更新部署清单和外部应用程序清单以指向新的文件位置。
更新嵌入的应用程序清单
若要编辑嵌入的应用程序清单,请使用 Visual Studio Tools for Office 提供的 ServerDocument 类。使用 ServerDocument 类时,必须在新项目(如控制台项目)中运行代码,而不能在 Visual Studio Tools for Office 解决方案中运行代码,并且必须关闭 Visual Studio Tools for Office 解决方案文档。
说明: |
---|
Visual Studio Tools for Office 包括一个示例,该示例演示如何创建可用于编辑嵌入的应用程序清单的工具。有关更多信息,请参见 ServerDocument 示例。 |
更新嵌入的应用程序清单
创建新的“控制台应用程序”项目。
将对 Microsoft.VisualStudio.Tools.Applications.Runtime 和 System.Windows.Forms 程序集的引用添加到此项目。
打开 Program.cs 或 Module1.vb 文件,并将下面的 Imports 或 using 语句添加到文件的顶部。
Imports Microsoft.VisualStudio.Tools.Applications.Runtime
using Microsoft.VisualStudio.Tools.Applications.Runtime;
将以下代码复制到 Main 函数中。此代码创建 ServerDocument,它提供对解决方案文档的嵌入应用程序清单的访问。该代码将新的部署清单路径分配到 DeployManifestPath 属性,然后保存并关闭 ServerDocument。
Dim sd As ServerDocument = Nothing Try sd = New ServerDocument("C:\TestDeploy\WordDeployment.doc") sd.AppManifest.DeployManifestPath = _ "\\DeployServer\ShareFolder\WordDeployment.application" sd.Save() Finally If Not sd Is Nothing Then sd.Close() End If End Try
ServerDocument sd = null; try { sd = new ServerDocument(@"C:\TestDeploy\WordDeployment.doc"); sd.AppManifest.DeployManifestPath = @"\\DeployServer\ShareFolder\WordDeployment.application"; sd.Save(); } finally { if (sd != null) { sd.Close(); } }
按 F5 运行项目。
更新嵌入的应用程序清单时,控制台窗口会短暂出现一下,然后关闭。
更新部署清单
由于已更新 Visual Studio Tools for Office 解决方案文档中嵌入的应用程序清单,因此您必须更新部署清单以指向外部应用程序清单的新位置。
更新部署清单
在文本编辑器(如“记事本”)中打开部署清单。部署清单位于发布文件夹 C:\TestDeploy 中,名为 WordDeployment.application。
将 codebase 元素的 codebase 属性设置为外部应用程序清单的最终部署位置的完整路径。有关更多信息,请参见 <dependentAssembly> 元素(Visual Studio Tools for Office 参考)。此演练的属性应如下例所示。
<dependentAssembly codebase="\\DeployServer\ShareFolder\ WordDeployment_1.0.0.0\WordDeployment.dll.manifest"
保存并关闭部署清单文件。
更新外部应用程序清单
除了更新部署清单之外,您还必须编辑外部应用程序清单以指向解决方案程序集和部署清单的最终部署位置。每次当您发布 Visual Studio Tools for Office 解决方案时,都会生成指向解决方案程序集当前版本的新外部应用程序清单。
更新外部应用程序清单
在文本编辑器(如“记事本”)中打开应用程序清单。应用程序清单位于发布文件夹 C:\TestDeploy\WordDeployment_1.0.0.0 中,名为 WordDeployment.dll.manifest。
查找 <installFrom> 元素(该元素是 <installFrom> 元素的子级),并将 <installFrom> 属性设置为当前解决方案程序集的完整路径。有关更多信息,请参见 <installFrom> 元素(Visual Studio Tools for Office 参考)。此演练的属性应如下例所示。
<dependentAssembly codebase="\\DeployServer\ShareFolder\ WordDeployment_1.0.0.0\WordDeployment.dll"
查找 <installFrom> 元素(该元素是 <installFrom> 元素的子级),并将 <installFrom> 属性设置为部署清单的完整路径。有关更多信息,请参见 <installFrom> 元素(Visual Studio Tools for Office 参考)。此演练的属性应如下例所示。
<dependentAssembly codebase="\\DeployServer\ShareFolder\WordDeployment.application"
保存并关闭应用程序清单文件。
将解决方案文件复制到服务器
由于您已编辑清单,现在即可将解决方案文件复制到服务器上的最终部署目标。
将解决方案文件复制到服务器
在网络文件共享 \\DeployServer\ShareFolder 下面创建 WordDeployment_1.0.0.0 文件夹。
将解决方案文档和部署清单复制到 \\DeployServer\ShareFolder。
将解决方案程序集和应用程序清单复制到 \\DeployServer\ShareFolder\WordDeployment_1.0.0.0。
向网络文件夹授予完全信任
若要从网络文件夹运行您的 Visual Studio Tools for Office 解决方案,您必须在开发计算机上的安全策略中向网络文件夹授予完全信任。您可以使用代码访问安全策略工具 (Caspol.exe),从命令提示符修改安全策略。要向网络位置授予信任,您必须具有管理员特权并在计算机级别更改安全策略。
说明: |
---|
此过程供执行此演练使用。如果您不能确定程序集或目录是安全的,请不要使用此过程向其授予信任。有关授予和移除权限的更多信息,请参见 如何:将权限授予文件夹和程序集 (2003 System) 和 如何:从文件夹和程序集中移除权限 (2003 System)。 |
向网络文件夹授予完全信任
在 Visual Studio 命令提示符下键入以下命令:
caspol -m -ag LocalIntranet_Zone -url \\DeployServer\ShareFolder\* FullTrust -n "Remote Deployment" -d "Deployment Walkthrough"
测试解决方案
现在您可以测试您的解决方案,以确保从开发计算机打开文档时代码运行。
测试部署
在开发计算机上打开位于 \\DeployServer\ShareFolder\ 的 WordDeployment.doc 文件。
确认出现消息框。
后续步骤
您也可以使用 Microsoft Windows Installer (.msi) 文件来部署您的解决方案。有关更多信息,请参见 演练:使用 Windows Installer 文件部署文档级自定义项 (2003 System)。
请参见
任务
演练:使用 Windows Installer 文件部署文档级自定义项 (2003 System)