背景:我们有一个ClickOnce部署的WPF应用程序,该应用程序与WCF服务通信,后者又与我们自己的SQL数据库以及通过客户端OM与SharePoint进行通信。为了设置WCF和ClickOnce,我们有一个Setup项目,该项目从安装用户处获取有关服务器路径和数据库连接字符串的详细信息,并触发Installer类来完成一些有趣的工作,例如编写配置XML和更新ClickOnce打包程序。部署网址等。
我们需要通过此安装程序向SharePoint中添加一些BDC模型,以便最终用户可以使用SharePoint列表界面在数据库中配置一些很少更改的表值。 (作为“一键式”安装过程,是由客户端强制执行的要求。)
在我们的Visual Studio 2010解决方案中包括一个BDC Model项目,我们可以为BDC东西获得打包的WSP,这听起来很棒。
但是,与此有关的一个问题是,在打包到此WSP中的feature.xml中,出现了以下硬编码行:
<Property Key="SiteUrl"
Value="http://BuildingWorkstationSharePointInstanceUrl/" />
Visual Studio不会将功能SiteUrl设置为机器本地的SharePoint实例以外的任何其他东西(这很la脚),因此我们无法更改该WSP之前的版本。
此外,.bdcm文件本身具有硬编码的连接字符串信息:
<LobSystemInstance Name="DatabaseName">
<Properties>
<Property Name="AuthenticationMode" Type="System.String">PassThrough</Property>
<Property Name="DatabaseAccessProvider" Type="System.String">SqlServer</Property>
<Property Name="RdbConnection Data Source" Type="System.String">DatabaseServer</Property>
<Property Name="RdbConnection Initial Catalog" Type="System.String">DatabaseName</Property>
<Property Name="RdbConnection Integrated Security" Type="System.String">SSPI</Property>
<Property Name="RdbConnection Pooling" Type="System.String">True</Property>
<Property Name="ShowInSearchUI" Type="System.String" />
</Properties>
</LobSystemInstance>
一旦安装用户提供了数据库连接信息,安装程序也将不得不重写此信息。
我也不确定通过MSI在服务器上实际安装WSP的最佳方法是什么(到目前为止,我一直想尝试执行powershell脚本)。
在我看来,为第三方设计BDC模型不应该掩盖场景,但是我找不到有关如何克服这些问题的任何信息或支持!
有人有什么建议吗?
最佳答案
我也遇到了这个问题。我想将BDC模型打包到WSP中,然后通过WSP进行部署。不幸的是(如您所指出的),BDC模型包含必须根据环境配置的特定环境信息。
我们着眼的是保留不同的BDC模型,仅导入它们而不是将它们打包在WSP中。从声音上看,您可能需要在安装时要求特定的环境信息,并以某种方式使用它。