将InfoPath表单部署到不同的SharePoint服务器

时间:2008-08-21 16:12:45

标签: sharepoint moss infopath

如何管理将InfoPath表单部署到不同的sharepoint服务器?是否有更好的方法来处理所有特定于站点的数据连接而无需打开表单,编辑数据连接并重新发布每个环境?

7 个答案:

答案 0 :(得分:6)

如果您正在使用开发系统并且需要不时地部署到生产系统,这是一个常见问题。我使用一个脚本,基于正则表达式执行(纯文本)替换。

每次部署时

  1. 备份表单; - )
  2. 将表单另存为源代码。 (我建议您处理源代码文件而不是.xsn,因为xsn只是一个重命名的.cab,其中包含源文件。并且您能够以更令人满意的方式使用源代码控制。)< / em>的
  3. 打开 manifest.xsf 文件
  4. 搜索xml节点“DataConnections”
  5. 搜索并替换site-url部分
  6. (不要忘记保存路径,文件和网站属性以及publishUrl)
  7. 从InfoPath Designer部署
  8. 我使用一个执行所有替换的脚本。这很好,已经为我节省了很多工作。

答案 1 :(得分:2)

如果您进入提交选项,则可以选择使用规则执行自定义操作。如果已设置所有数据连接,则可以配置规则以选择要提交的连接。

答案 2 :(得分:2)

如果我理解你的情景:

您有一个InfoPath表单,其中包含提交数据的数据连接。 您希望在多个SharePoint服务器上部署此表单,并让这些数据连接将数据提交到当前部署的服务器。

您无法真正解决需要在每个要部署表单的SharePoint服务器上工作的问题。但是,您可以绕过需要修改InfoPath表单模板。

如果您使用SharePoint数据连接库(DCL)并从数据连接创建UDC文件,则在您要使用的每个SharePoint Server上...然后您的InfoPath模板可以与UDC文件进行通信。

以下是有关将InfoPath与SharePoint的DCL集成的文章的链接:

http://msdn.microsoft.com/en-us/library/bb267335.aspx

答案 3 :(得分:1)

re:speedfox的答案,尽可能远离编辑清单。这只会导致头痛。

如果我了解您的问题,您将部署到多个服务器(DEV,UAT,Production),并且每次从一个环境转到另一个环境时都需要手动编辑数据连接?如果我过度简化了问题,请原谅我

我发现建立数据连接站点相关的最佳方法是:

  1. 在表单中使用数据连接文件。在infopath中打开数据连接向导,并为所有数据连接单击“转换...”,这会将您的数据连接从嵌入在表单中更改为独立的XML文件。您需要在sharepoint站点上使用数据连接库来存储这些库。在浏览器中创建它。

  2. 转换完成后,连接返回到它并且会有一个连接选项...按钮用它来从“本地数据连接库”更改为“中央管理的连接库”

  3. 将您网站数据连接库中的数据连接上传到管理中心

  4. 发布表单时,请确保您要发布到集中管理的位置(中央管理员)

  5. 将您的表单用作该网站集上任何表单库中的内容类型。

  6. 要在其他网站上使用该表单,请将数据连接文件上载到新服务器中央管理员,并将(未更改的)表单发布到集中管理的表单。

答案 4 :(得分:1)

请参阅我的博客文章,我将逐步介绍相关快照,其中包含以下内容:

一个。将InfoPath数据连接转换为SharePoint中的DCL库。 湾将InfoPath表单发布到SharePoint列表/库 C。为InfoPath表单及其代码隐藏创建.wsp解决方案包 d。创建将在生产站点上部署InfoPath表单的批处理脚本。 即确保已将InfoPath表单部署为功能部件 F。修改生产环境中的DCL。 G。将InfoPath内容类型与文档/表单库相关联

请参阅完整的博文:http://www.sharepointfix.com/2009/12/infopath-2007-form-and-nintex-workflows.html

答案 5 :(得分:0)

根据特定于站点的情况,您是否表示表单中的数据连接是指部署表单的服务器?如果是这种情况,也许您可​​以调整连接以使用localhost而不是服务器名称作为数据连接URL的主机名部分。

答案 6 :(得分:0)

在我的场景中,我没有使用内置的“保存”按钮。我有一个数据连接,用于将数据“发布”到另一个列表。

是的,这就是我所说的特定于网站的含义。我不认为你可以使用localhost'cos当用户保存表单时,它会尝试发布到用户的计算机(即localhost)。我试图使用相对路径,但这似乎不起作用。