代码改变世界

创建、部署和卸载SharePoint工作流解决方案包(WSP)

2009-04-30 15:36 Windie Chai 阅读(...) 评论(...) 编辑 收藏

在Visual Studio 2005时代,Visual Studio的插件提供了一个批处理文件(*.bat)来部署SharePoint工作流;在Visual Studio 2008时代,Visual Studio支持直接部署SharePoint工作流。虽然使用Visual Studio 2008来设计、开发以及部署SharePoint工作流非常方便,但如果想要把开发好的工作流部署到其他服务器,就会发现,Visual Studio 2008并没有将工作流生成为一个WSP文件,也没有提供批处理文件。

本文就来介绍一种在Visual Studio 2008中生成SharePoint工作流WSP文件的方法。虽然这个方法并不是什么新方法,但却知者甚少,所以我还是累述一下吧。

创建SharePoint工作流解决方案包

首先需要安装Microsoft Visual Studio Tools for the Office System Power Tools v1.0.0.0,下载地址如下:

 http://www.microsoft.com/downloads/details.aspx?FamilyID=46B6BF86-E35D-4870-B214-4D7B72B02BF9&displaylang=en

然后打开你的用文本编辑器打开你的工作件项目文件(*.csproj),定位到文件底部,在</Project>标记上方添加如下的标记:

<Target Name="AfterBuild">
    
<Exec Command="&quot;C:\Program Files\Microsoft VSTO Power Tools 1.0\Workflow Package Generator\WorkflowPackageGen.exe&quot; /featureManifest:feature.xml" ContinueOnError="true">
    
</Exec>
</Target>

保存后用Visual Studio 2008打开工作流项目,生成工作流后,就会在项目文件夹中发现已经生成的WSP文件,此外还包括manifest.xml、package.ddf、setup.inf和setup.rpt文件,十分方便。

而且生成的WSP文件还包含了工作流所引用的资源文件,包括在Feature.xml中使用ElementFile标记引用的InfoPath表单文件。

部署SharePoint工作流解决方案包

将以下命令保存到一个批处理文件(*.bat)中,执行该文件就可以将WSP文件部署到SharePoint场中了:

@SET STSADM="c:\program files\common files\microsoft shared\web server extensions\12\bin\stsadm.exe"

%STSADM% -o addsolution -filename WSP文件路径

第二步是将该解决方案包部署到Web前端服务器,这一步有两种方法:

  • 在SharePoint管理中心中,转到“操作”>“解决方案管理”,点击刚才部署的解决方案包,点击“部署解决方案”。
  • 将以下命令保存到一个批处理文件(*.bat)中,执行该文件就可以将WSP文件部署到SharePoint Web前端服务器了:
    @SET STSADM="c:\program files\common files\microsoft shared\web server extensions\12\bin\stsadm.exe"

    %STSADM% -o deploysolution -name WSP文件路径 -immediate -allowGacDeployment
    %STSADM% -o execadmsvcjobs

第三步是在Web前端服务器中激活刚才部署的解决方案包中的功能,这一步也有两种方法:

  • 在SharePoint Web前端服务器中,转到“网站设置”>“网站集功能”,找到刚才部署的工作流功能,点击“激活”。
  • 将以下命令保存到一个批处理文件(*.bat)中,执行该文件就可以激活该工作流功能了:
    @SET STSADM="c:\program files\common files\microsoft shared\web server extensions\12\bin\stsadm.exe"

    %STSADM% -o activatefeature -filename 
    "功能目录\feature.xml" –url "http://网站URL"

卸载SharePoint工作流解决方案包

卸载SharePoint工作流解决方案的步骤正好和部署相反,需要先停用工作流功能,然后收回解决方案,最后删除解决方案包。

停用工作流功能的方法有两种:

 

  • 在SharePoint Web前端服务器中,转到“网站设置”>“网站集功能”,找到刚才部署的工作流功能,点击“停用”。
  • 将以下命令保存到一个批处理文件(*.bat)中,执行该文件就可以激活该工作流功能了:
    @SET STSADM="c:\program files\common files\microsoft shared\web server extensions\12\bin\stsadm.exe"

    %STSADM% -o deactivatefeature -filename 
    "功能目录\feature.xml" -url "http://网站URL "

收回解决方案的方法也有两种:

  • 在SharePoint管理中心中,转到“操作”>“解决方案管理”,点击刚才部署的解决方案包,点击“收回解决方案”。
  • 将以下命令保存到一个批处理文件(*.bat)中,执行该文件就可以将WSP文件部署到SharePoint Web前端服务器了:
    @SET STSADM="c:\program files\common files\microsoft shared\web server extensions\12\bin\stsadm.exe"

    %STSADM% -o retractsolution -name WSP文件名 -immediate
    %STSADM% -o execadmsvcjobs

    而从SharePoint场中删除WSP文件则需要执行包含以下内容的批处理文件(*.bat):

    @SET STSADM="c:\program files\common files\microsoft shared\web server extensions\12\bin\stsadm.exe"

    %STSADM% -o deletesolution -filename WSP文件名

     

    总结

    也许有人会觉得这种方法相对于Visual Studio 2005提供的批处理文件来说,并没有多大改进。的确,这两种方法都需要执行命令,但解决方案包的优势是它会将工作流所需的资源都打包为一个可分发的文件(*.wsp),而使用命令直接针对Feature.xml来安装功能则需要分发多个文件(包括程序集、InfoPath表单、Feature.xml、Workflow.xml等)。

    如果你愿意,你完全可以将上述的所有命令组装到一个批处理文件文件中,并添加安装和卸载的开关(-i和-u),这样就可以方便的进行“安装+部署+激活”和“停用+收回+删除”操作了(就像VSeWSS生成的批处理文件那样)。

    参考

    How Do I: Use VSTO Power Tools SharePoint Workflow Package Generator?

    使用 SharePoint 2007 部署解决方案