自动化部署InfoPath表单工具

在处理InfoPath表单时,经常面临将表单从一个位置(服务器)迁移到另一个位置的困扰。这个过程不仅繁琐,而且当涉及到多个环境(如开发、测试和生产)时,手动发布到每个环境更是一项艰巨的任务。为了解决这个问题,开发了一个工具,可以自动化地将InfoPath表单部署到任何网络位置。

有人可能会问,为什么需要多个表单?难道不能在一个表单中使用多个视图并将其部署到服务器吗?实际上,在使用多个视图共享一个数据源时遇到了问题。如果一个数据字段被多个视图共享,并且每个视图以不同的方式使用该字段,那么当一个视图更改字段值时,其他视图也会受到影响。因此,决定为每个视图使用不同的表单。接下来的问题就是如何部署这些表单。

使用代码

以下是开发的工具的核心代码,它使用VB.NET编写。这段代码展示了如何修复XSN文件,以便它可以被部署到指定的网络位置。

Sub FixupXSN(ByVal xsnInputPath As String, ByVal xsnOutputPath As String, ByVal publishUrl As String) Try If Not File.Exists(xsnInputPath) Then MessageBox.Show("File does not exist: " + xsnInputPath) Exit Sub End If ' Create temporary folder and explode the XSN Dim tempFolderPath = Directory.CreateDirectory(PathCombine(Path.GetTempPath, Path.GetTempFileName)).FullName tempFolderPath = PathCombine(Path.GetTempPath, Path.GetFileNameWithoutExtension(Path.GetTempFileName)) tempFolderPath = Directory.CreateDirectory(tempFolderPath).FullName ExtractFilesFromXSN(xsnInputPath, tempFolderPath) ' Modify the XSF in place Dim xsfPath As String = PathCombine(tempFolderPath, "manifest.xsf") Dim hsAttributesAndValues As New Hashtable hsAttributesAndValues.Add("publishUrl", publishUrl) hsAttributesAndValues.Add("publishSaveUrl", xsnOutputPath) ' Generate the new XSN CreateXSNFromFiles(tempFolderPath, "manifest.xsf", xsnOutputPath) ' Cleanup File.Delete(tempFolderPath) Catch ex As Exception ShowMessage(ex.Message) Trace(ex.StackTrace) End Try End Sub

开发过程中的学习点

在开发这个工具的过程中,学习了如何使用CABSDK工具。CABSDK是一个强大的工具,可以帮助处理CAB文件,这是InfoPath表单部署过程中的关键部分。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485