65.9K
CodeProject 正在变化。 阅读更多。
Home

SharePoint Web 部件基础知识(第二部分:部署方法)

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.38/5 (7投票s)

2006年4月4日

7分钟阅读

viewsIcon

96824

一篇关于编程和部署 WSS Web 部件的文章

Sample Image - frontend.jpg

引言

几年来,我一直将 Code Project 作为一个参考,现在我终于决定自己也做一些贡献。我为 SharePoint 编写 Web Part 组件大约有两年了,虽然这不是我经常做的事情,但我还是有一些意外的发现,想与 Code Project 的读者们分享。

微软的一些 SharePoint 文档并不是非常清晰,阐明这一点是本文的目标之一。我还认为,Code Project 是网上为微软程序员提供的最好、最稳定、最知名的资源之一,但到目前为止,Code Project 缺少许多关于 SharePoint 技术 Web Part 的文章。这正是我主要的兴趣之一,所以我决定尽我所能帮助填补这一空白。

本文将重点讨论 Web Part 组件的部署,并涵盖 STSADM.exe 实用工具的使用,这是 SharePoint 管理的一个基本要素。我还会介绍在 Visual Studio 中创建 cab 文件的基础知识。Code Project 上有一篇文章详细介绍了手动构建 cab 文件的方法。在我之前的文章(第一部分)中,我介绍了创建一个基本 Web Part 的要素。

背景

必需

  • Windows 2003 Server
  • Windows SharePoint Services v2.0
  • Visual Studio 2003
  • Web Part 模板

可选(强烈推荐)

部署 Web Part(Cab、实用工具和 MSI)

本文不包含任何代码,因为它主要关注的是有效部署 SharePoint Web Part 需求中的一些细节。

使用 SharePoint 最主要也是最重要的实用工具是 stsadm.exeSTSADM 承担着多种角色,其中一些也可以在 SharePoint 的 Web 界面中完成。但有一件事 Web 界面无法为你做,那就是安装 Web Part,所以在这方面你只有两种选择。你可以通过 MSI (Microsoft Installer) 文件部署 Web Part,或者通过专门构建的 cab 文件来部署。cab 文件安装是最简单、最容易创建的安装方法。MSI 则需要一个 MSI 编辑器,比如声名狼藉但非常基础的 Orca(来自微软 SDK),或者相当易用的 Wise for MSI 创作环境,又或者是同样简单的 Install shield Installer 环境。还有其他的 MSI 创作环境,但我大多不熟悉,就不一一列举了。

那么,我们就来专注于使用 Visual Studio 2003 自带的 cab 构建器。如果你还没用过,那么在开发 Web Part 时你一定会用到。假设你已经开始了一个 Web Part 组件项目,并且它包含在一个 VS 解决方案中,那么请转到解决方案的根目录并添加一个新项目,然后进入“Setup and Deployment Projects”(安装和部署项目),并点击 Cab 模板。你应该在文件系统中选择一个合适的文件夹位置。我通常会把它添加到项目的根目录,这样在实际部署时就不用到处找这个 cab 文件了。现在,这个 Cab 项目是一个空项目。你最终需要从主 Web Part 项目中添加主输出(Primary Output)和内容文件(Content files)。不过,在此之前,你需要满足一个正确定义的 Web Part 部署 Cab 的其他要求,你至少还需要两项内容。

你需要在你的 Web Part 项目中添加两项内容

  1. 一个 Web Part DWP 文件
  2. 一个 WP 清单文件(Manifest)

清单文件(Manifest.xml)是功能性 cab 安装所必需的,而 filename.dwp 文件则为 SharePoint 本身提供信息。

<!--Sample Manifest.xml file-->
<?xml version="1.0"?>
<!-- You need only one manifest per CAB project for Web Part Deployment.-->
<!-- This manifest file can have multiple assembly nodes.-->
<WebPartManifest xmlns="http://schemas.microsoft.com/WebPart/v2/Manifest">
    <Assemblies>
        <Assembly FileName="AKWebPart.dll">
        <!-- Use the <ClassResource> tag to specify resources 
        like image files or JScript files that your Web Parts use. -->
        <!-- Note that you must use relative paths when 
            specifying resource files. -->
        <!--
            <ClassResources>
                <ClassResource FileName="Resource.jpg"/>
            </ClassResources>
         -->
            <SafeControls>
                <SafeControl Namespace="AKWebPart" TypeName="*" />
            </SafeControls>
        </Assembly>
    </Assemblies>
    <DwpFiles>
        <DwpFile FileName="AKWebPart.dwp"/>
    </DwpFiles>
</WebPartManifest>

如你在上面的 Manifest 示例中所见,你有一个指向 dll(本例中为 AKWebPart.dll)的条目,以及另一个指向 .dwp 文件(AKWebPart.dwp)的条目。此外,你还有一个指向主 Assemblies 命名空间的条目。cab 文件在生成时会自动添加一个额外的 .osd 文件,该文件实际上是用来指导安装 API 和 stsadm.exe 实用工具如何处理你的 cab 文件安装的。

<!--Example Generated OSD File -->
<?XML version="1.0" ENCODING='UTF-8'?>
<!DOCTYPE SOFTPKG SYSTEM "http://www.microsoft.com/standards/osd/osd.dtd">
<?XML::namespace href=http://www.microsoft.com/standards/osd/msicd.dtd 
                as="MSICD"?>
    <SOFTPKG NAME="setupakwebpart" VERSION="1,0,0,0">
    <TITLE> setupakwebpart </TITLE>
        <MSICD::NATIVECODE>
            <CODE NAME="AKWebPart">
                <IMPLEMENTATION>
                    <CODEBASE FILENAME="AKWebPart.dll">
                    </CODEBASE>
                </IMPLEMENTATION>
            </CODE>
        </MSICD::NATIVECODE>
    </SOFTPKG>

DWP 文件是构成一个格式正确的 cab 部署文件的下一个关键要素,示例如下

<!--Sample Web Part dwp file -->
<?xml version="1.0" encoding="utf-8"?>
<WebPart xmlns="http://schemas.microsoft.com/WebPart/v2" >
    <Title>Sample Web Part</Title>
    <Description>A demonstration web part</Description>
    <Assembly>AKWebPart</Assembly>
    <TypeName>AKWebPart.AKWebPart</TypeName>
    <!-- Specify initial values for any additional base class 
        or custom properties here. -->
</WebPart>

在 DWP 文件中,你可以看到对 Web Part V2 XML 命名空间的引用。你会看到 Title(标题)和 Description(描述)的位置,这两项都有助于你在一个可能很快被填满的 Web Part 库中定位你的 Web Part。为自己创建的 Web Part 取个好名字是明智之举。Assembly 是组件的命名空间,而 TypeName 引用的是你的 Web Part 的类名,并以命名空间为前缀。当你真正开始部署 Web Part 时,你就会明白为什么这很重要了,所以请先别觉得无聊。

那么,我们假设你已经成功编译了你的 Web Part 并生成了 cab 文件,接下来你需要执行流程中的下一步。你需要将完成的 cab 文件复制到目标开发服务器上进行测试。你可以通过多种方法来完成此操作,例如使用 UNC 复制,其中一种可能是 //servername/C$/Program Files/Microsoft Shared/web server extensions/60/bin。这里是 stsadm.exe 实用工具所在的位置,它将帮助你在测试服务器上安装包含你新 Web Part 的 cab 文件。

STSADM 对于部署你的新部件至关重要。它需要一系列参数才能完整地安装一个 Web Part。一些示例如下

stsadm -o addwppack -filename yourcab.cab -url http://yourSPServerName

简单来说,-o 是要执行的操作,-filename 是你的新 cab 文件,而 -url 是 Web 服务器的 URL 格式名称。在安装和移除 Web Part 时,stsadm 还有一些其他有用的参数值得了解。

移除一个 Web Part

stsadm -o deletewppack -name yourcab.cab -url http://yourservename

要获取 SharePoint 初始部署后安装的 Web Part 列表,可以使用以下命令(内置的默认 Web Part 不会显示在 stsadm 中)。

List: stsadm -o enumwppacks -url http://yourwebservername

请注意,参数在不同操作之间有细微变化:添加部件是 addwppack -filename,删除部件是 deletewppack -name,列出部件是 enumwppacks。它们都存在细微差异,因此可能会出现输入错误。

使用 addwppacks 成功部署后,你还需要执行另外两个操作才能测试你的新 Web Part。

首先,你必须重置 IIS,以便让你的新部件在 SharePoint 中可见。这里你可以使用历史悠久的 iisreset 命令,非常简单。运行 iisreset,你会看到“正在尝试停止……”的消息,成功停止后,你会看到“正在尝试启动……”,只要运气不太差,你就能成功重启服务器。

你需要进入 SharePoint 的 Web 界面,让你和你的用户能够访问你的新 Web Part,并执行以下操作

  • 点击 网站设置,然后点击 转到网站管理

  • 当你到达下面的页面时,点击 管理 Web Part 部件库

  • 进入 Web Part 部件库后,点击 新建 Web Part 部件

  • 你会进入下面的页面,并且应该能够找到你的新 Web Part。

    勾选相应的复选框,然后点击 填充库 按钮。

  • 你可以点击 Web Part 库中的部件来预览你的组件,如下图所示。

可能的替代方案

你也可以使用像 Wise、Install Shield、Visual Studio Setup Project 或其他 MSI 创作工具来制作安装程序,但我目前不打算探讨这个问题。或许我将来可以再写一篇关于通过 MSI 安装 Web Part 的文章。

历史

  • 这是第一版,除非我发现错误或者有人提出补充或修改建议。
© . All rights reserved.