注:本文内容基于SharePoint2013版本,开发工具基于VS2013。版本历史也可以参考这篇文章。
WSP:SharePoint解决方案包。
一.概念和工具
让我们从WSP的起源说起。要了解WSP,我们应该从SharePoint开发开始。Sharepoint的可开发内容相当复杂。最新版本的VS2013已经包含SharePoint解决方案的基本模板。从创建到部署的整个过程简单易用,比之前的解决方案开发要容易很多。但是,它不能脱离SharePoint主机环境,不能远程开发和部署。不过SharePoint已经开始了一个新的编程思路,那就是SharePointAPP开发,可以在客户端进行编程和部署。
在工程师创建了SharePoint解决方案之后,他已经对列表库、Web部件、事件、网站模板、工作流和其他方面进行了编程和开发。每一个的功能都是特性,那么如何最终将这些功能部署到SharePoint环境中呢?首先需要将解决方案打包成一个WSP文件。事实上,这个WSP文件是一个cab文件,是一个压缩文件。有兴趣的可以用rar工具打开这个文件看看。
将解决方案打包成wsp文件的方法有很多,我之前使用的方法是
这些工具的使用不是本文要解释的部分。如何使用它们可以关注我博客中的其他相关文章。
二。WSP部署、更新和删除
先解释一下:
解决方案分为:添加、安装(又名部署)、更新、撤销、删除,
功能分为:激活和停用
添加解决方案
两个命令,STM和SharePointPowerShell。建议从SharePoint2013使用PowerShell命令集。
STM命令的一个例子如下(消去法的用法):
>stsadm-oaddsolution-filename<;路径>\YourSolution.wsp
PowerShell命令的示例如下:
>add-spsolution-literalpath"wsppath\filename.wsp"
对于添加的解决方案,您可以在管理中心部署该解决方案:
>进入管理中心-系统设置-管理现场解决方案。这里只介绍功能的位置,不详细描述如何 *** 作。 *** 作简单易懂。
安装(部署)解决方案
>install-spsolution-identity"yoursolution.wsp"-web应用程序"站点地址"-GACDeployment
更新解决方案
>update-spsolution-Identity"yoursolution.wsp"-literalpath"<;路径>\yoursolution.wsp"-GACdeployment-force
撤回解决方案
>uninstall-spsolution-Identity"yoursolution.wsp"
删除解决方案
>remove-spsolution-Identity"yoursolution.wsp"
注意:在删除解决方案之前,您必须将其收回。
获取添加的解决方案
>Get-SPSolution
解锁解决方案的部署
>remove-SPSolutionDeploymentLock
三。功能的部署和停用
一个解决方案将包含一个或多个功能。将解决方案部署到站点后,可以通过命令控制解决方案中每个功能的状态。功能概念可以对应于SharePoint解决方案项目的功能目录中的结构定义。
获取功能
>Get-SPFeature
上述命令可以获得场中的所有功能,显示“名称、GUID、SharePoint功能版本”
>get-spfeature-Identity"<;GUID>;"
您可以获得一个ID为GUID的特性,
安装SharePoint功能
>安装-spfeature-path"<;您的解决方案>_<功能名称>
卸载功能
>uninstall-spfeature-Identity"<;您的解决方案>_<功能名称>
在给定范围内启用功能
>enable-spfeature-Identity"<;您的解决方案>_<功能名称>-URL"<;siteUrl>;"
在给定范围内禁用特性
>disable-spfeature-Identity"<;您的解决方案>_<功能名称>-URL"<;siteUrl>;"
四。沙盒解决方案
>更新-SPUserSolution
>Install-SPUserSolution
>卸载-SPUserSolution
>移除-SPUserSolution
>Get-SPUserSolution
>Add-SPUserSolution
五.计时器解决方案
安装AutoSenArvatodMailJob.wsp
1)Add-spsolution-literalpath"c:\autosendmailjob.wsp"
2)Install-spsolution-Identity"autosendmailjob.wsp"-webapplication<;siteUrl>-GACDeployment
3)iisreset
4)Disable-spfeature-Identity"AutoSendMailJob_feature2"-Url"<;siteUrl>;"5)Enable-spfeature-Identity"AutoSendMailJob_feature2"-Url"<;siteUrl>;"
6)净停止SPTimerV4
7)净开始SPTimerV4
更新AutoSenArvatodMailJob.wsp
1)Disable-spfeature-Identity"arvato。BBA.AutoSendMailJob_feature2"-Url"<;siteUrl>;"
2)卸载-spsolution–Identity"arvato。BBA.autosendmailjob.wsp"-webapplication"<;siteUrl>;"-Confirm:$false
3)Remove-spsolution-IdentityArvato。BBA.autosendmailjob.wsp-Confirm:$false
4)Add-spsolution-literalpath"c:\arvato。BBA.autosendmailjob2.wsp"
5)Install-spsolution-Identity"arvato。BBA.autosendmailjob.wsp"-webapplication"<;siteUrl>;"-GACdeployment
6)iisreset
7)Enable-spfeature-Identity"arvato。BBA.AutoSendMailJob_feature2"-Url"<;siteUrl>;"8
8)净停止SPTimerV4
9)净开始SPTimerV4
3.删除冗余定时器的方法
//检查计时器“arvatobasendmailtimerjob”
Get-sptimerjob|?{$_.name-match"ArvatoBBASendMailTimerJob"}|ftid,name
//将作业设置为变量
$job=Get-SPTimerJob-id59af3540-7ac0-4477-82F9-1f6ab9829ACA
//并将其删除。
$job。删除()
最后:wsp文件编译后会自动打包在VS2013的SharePoint解决方案的bin\debug目录下。要将解决方案远程部署到企业环境中,您可以复制这个wsp文件并编写一个ps1PowerShell脚本文件。只需将其交付给企业系统管理员进行安装即可。
PS1脚本文件,可由C#调用和执行。这部分的解释要在后面的博客里总结,所以在这里说明一下。
以编写备份网站集的PS1文件为例:
在该脚本中,backup-spsite用于备份SharePoint网站集,网站的URL和备份路径设置为两个参数,并保存为一个后缀为ps1的文件,如backup.ps1
编写批处理脚本来执行备份和写入日志。
@echo off SET SOURCE_SITE= SET DEST=C:\backup\RZH-SP-204_%date:~0,10%.bak SET LOG=C:\backup\BackupLog.txt echo %DATE% %time:~,5% :开始备份网站:%SOURCE_SITE%>> %LOG% powershell -command C:\backup.ps1 %SOURCE_SITE% %DEST% echo %DATE% %time:~,5% :网站:%SOURCE_SITE%备份完成>> %LOG% @echo on将此脚本保存为bat批处理文件
不知道上面的代码你能不能看懂,这里就不解释了。
最后,一个完整的安装wsp解决方案的脚本将会呈现给您。如果不够完整,请告诉我们!
Add-PSSnapin Microsoft.SharePoint.PowerShell $solutionName = "SharePointProject2.wsp" $webUrl = "http://wisdom-moss/" $path = Split-Path -Parent $MyInvocation.MyCommand.Definition $solution = Get-SPSolution | select name foreach($s in $solution){ if($s -match $solutionName){ Write-Host -ForegroundColor Green "Solution '$solutionName' was existed." $deployed = Get-SPSolution -Identity $solutionName | select deployed if($deployed.Deployed){ Write-Host -ForegroundColor Green "Start uninstall solution..." Uninstall-SPSolution -Identity $solutionName -Confirm:$false -Verbose -WebApplication $webUrl #sleep 30s, need uninstall over. Start-Sleep -s 30 Write-Host -ForegroundColor Green "End uninstall solution!" } Write-Host -ForegroundColor Green "Start remove solution..." Remove-SPSolution -Identity $solutionName -Confirm:$false Write-Host -ForegroundColor Green "End remove solution!" } } Write-Host -ForegroundColor Green "Start add solution..." Add-SPSolution -LiteralPath ($path + '\' + $solutionName) Write-Host -ForegroundColor Green "End add solution!" Write-Host -ForegroundColor Green "Start deploy solution..." Install-SPSolution -Identity $solutionName -WebApplication $webUrl -FullTrustBinDeployment Write-Host -ForegroundColor Green "End deploy solution!" Write-Host -ForegroundColor Green "End all executed."注意:因为我的解决方案被定义为WebApplication的程序集部署目标,所以我想将dll部署到网站集的bin目录。如果您的解决方案希望部署到GAC以进行解决方案的全局部署,则需要将程序集部署到GlobalAssemblyCache。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)