[SharePoint 2007]如何解决上传InfoPath表单时一直处于正在安装状态的问题
众所周知要在SharePoint 2007中使用包含代码的InfoPath表单时,必须将表单模板上传到管理中心才行,不知道大家有没有遇到过下面这种问题,当上传表单后,其状态一直处于正在安装,既不会就绪,也不能删除,就如下图所示。
俗话说,常在河边走哪能不湿鞋。。。。。可能是经常在项目中用到InfoPath的缘故,这个问题小弟遇到过很多次,在眼下的一个项目中又出现了这个问题,而且这次更加严重(具体情况容后再表)。
虽说这个问题经常遇到,但至今不知道导致这个问题产生的具体原因,至于下面所说的解决方法也仅仅是小弟根据产生的具体情况所总结出的解决方法。
下面让我们切入正题,首先出现这种一直处于正在安装或正在删除情况后,一般会出现两种状况。
先说比较好解决的,当出现不能安装时,我们可以先看一下SharePoint管理中心里计时器作业状态。此时可能会出现上传表单模板的作业未成功的情况。如果是这种情况,那么恭喜你,这真是不幸中的万幸,这个问题还是比较好解决的,运行下下面这条命令一般就可以了。
stsadm.exe –o execadmsvcjobs
下面接着说另外一个更恐怖的情况吧,请允许我用恐怖这个词,这个问题也是我在目前的项目中遇到的问题,我找出的解决方法也仅是能使表单模板能够正常的使用,但并未从根本解决该问题。
这个问题有以下几个症状:
首先,一个共同的症状,表单模板一直处于正在安装状态,不能删除,不能激活,所有表单模板都不能正常的上传。
其次,也是与上面所说那种比较好解决的状况相区别的症状,就是在计时器作业状态中显示这些表单模板的部署作业已经成功了,如下图所示。
也正是因为它们的计时器作业已成功,所以我们再用execadmsvcjobs这条命令已经不管用了。
最后一个症状是在解决方案管理页面中看到这些表单模板解决方案同样一直处于正在部署状态。
其实从第三个症状可以获得一些解决该问题的灵感,有可能之所以表单一直处于正在安装状态就是因为在SharePoint在将表单模板当作解决方案部署时被卡住了,那么要怎么解决这个问题呢,经过小弟的尝试,可以通过下面的方法将表单成功上传到SharePoint中,请往下看。
第一步:先将这个解决方案部署动作停掉。要停掉这个部署过程可以使用下面两条命令。
stsadm.exe –o enumsolotions >c:\deploymentsolution.xml
这条命令可以获得场内的所有解决方案的详细信息,我在这里将其保存到C盘下一个名为deploymentsolution.xml的文件中。
打开这个文件,可以看到类似下面的内容。
<Solution Name="form-b008_t002.wsp">
<Id>c61ed8d9-4546-47fb-b01d-e3da48c71253</Id>
<File>Form-B008_T002.wsp</File>
<Deployed>FALSE</Deployed>
<WebApplicationSpecific>FALSE</WebApplicationSpecific>
<ContainsGlobalAssembly>FALSE</ContainsGlobalAssembly>
<ContainsCodeAccessSecurityPolicy>FALSE</ContainsCodeAccessSecurityPolicy>
<SolutionDeploymentJob id="0e480632-1c34-424b-aced-d9707ce6673e">
<Title>“form-b008_t002.wsp”的 Windows SharePoint Services 解决方案部署</Title>
<Type>Deployment</Type>
<State>待定</State>
</SolutionDeploymentJob>
</Solution>
我们所需要的内容就是SolutionDeploymentJob标签内的ID值,有了这个值就可以将这个部署动作停止掉了,方法是使用下面这条命令。
stsadm.exe –o canceldeployment –id SolutionDeploymentJobId
当操作成功后,我们就可以在管理中心的表单模板管理页面将那些一直处于正在安装状态的表单模板删除掉了。
第二步:进入12>TEMPLATE>FEATURES目录中我们会发现此时在这个目录中多了几个目录,注意它们的名字。
上图中被红线框起来的两个文件夹其实就是我们刚刚上载不成功的表单模板。其实我们可以把在管理中心里上传表单模板的过程理解为在场范围内部署一个Feature,所以现在要做的就是将这些未成功安装的表单模板Feature安装上就好了。这里仍然可以采用使用命令行的方式来安装Feature,可使用下面这条命令。
stsadm.exe –o installfeature –name FT-01-478af04a-1386-0c17-a2c9-de28cad01f0d
等待操作完成后让我们再回到表单模板管理页面,此时可以看到之前未成功的那几个表单模板现在都已经处于就绪状态了,我们只需要将其激活到需要的网站集就可以了。
上面就是我在遇到这种情况时的两种解决方法,希望可以帮到大家。最后再补充一句,做SharePoint项目真是不能着急,因为它有时真的是莫名其妙。。。。。。