3

背景:我们有一个 ClickOnce 部署的 WPF 应用程序,它与 WCF 服务对话,后者又与我们自己的 SQL 数据库对话,并通过客户端 OM 与 SharePoint 对话。为了设置 WCF 和 ClickOnce,我们有一个 Setup 项目,它从安装用户那里获取有关服务器路径和数据库连接字符串的详细信息,并触发 Installer 类来做一些有趣的事情,比如编写配置 XML 并为此更新 ClickOnce 绑定器部署 URL 等。

我们需要通过此安装程序将一些 BDC 模型添加到 SharePoint,以便最终用户可以使用 SharePoint 列表界面来配置我们数据库中一些很少更改的表值。(尽可能“一键式”安装过程是客户强加的要求。)

在我们的 Visual Studio 2010 解决方案中包含一个 BDC 模型项目,我们可以为我们的 BDC 东西获得一个打包的 WSP,这听起来很棒……
但是,这样做的一个问题是,在被打包到这个 WSP 中的 feature.xml 中,出现此硬编码行:

<Property Key="SiteUrl" 
    Value="http://BuildingWorkstationSharePointInstanceUrl/" />

Visual Studio 不会将 SiteUrl 功能设置为机器本地的 SharePoint 实例以外的任何内容(这很蹩脚),因此我们无法更改 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 模型不应该是一个晦涩难懂的场景,但我找不到任何关于如何克服这些问题的信息或支持!

有人有什么建议吗?

4

5 回答 5

1

我也遇到了这个问题。我想将我们的 BDC 模型打包到 WSP 中并通过 WSP 进行部署。不幸的是(就像您已经指出的那样)BDC 模型包含必须为每个环境配置的特定环境信息。

我们所做的是保留不同的 BDC 模型并仅导入它们而不是将它们打包在 WSP 中。从它的声音来看,您可能需要在安装时询问特定的环境信息并以某种方式使用它。

于 2011-03-24T17:53:00.827 回答
1

您可以采用两种方法:

  1. 如果您使用“自定义”程序集类型(而不是 DotNetAssembly 作为您的 LobSystem 类型),则可以实现 IAdministrable 以允许您在 Central Admin 中更改属性(LobSystem 或 LobSystemInstance)。即使实现了 IAdministrable,它似乎也不适用于 DotNetAssemblies。

  2. 或者,您可以通过导入资源文件来更改属性。最简单的方法是导入您的模型,然后将其导出为资源文件并将文件编辑为您需要更改的属性。然后导入 bdcr(资源)文件,您将看到属性已更改的指示。

于 2011-11-30T17:34:15.500 回答
1

Advanced Installer对此提供了一些支持。基本上,通过其 XML 编辑器,您可以使用Windows Installer 属性,而不是清单文件中的硬编码值。

我能想到的另一个解决方案是在安装后使用自定义操作来修改文件。

无论哪种方式,这都需要一个复杂的安装程序,例如 MSI 软件包。ClickOnce 不支持它。

于 2011-11-30T21:38:14.767 回答
0

如果您想在部署时将 BDC 部署到特定的 siteURL,请在查看解决方案时转到 bcd 模型的项目文件夹,在文件夹的属性中您应该会看到名为“功能属性”的内容。

单击省略号以展开属性并添加一个名为“SiteUrl”的标题,并将其设置为您要部署它的站点的根目录:即“http://spsite”。

它将被部署到该站点而不是本地站点。

于 2011-07-26T19:45:09.700 回答
0

在我们的案例中,我们使用SharePoint 2010 中的说明实现了自定义功能接收器,使用场属性包部署 BCS 模型以具有动态站点 URL 它允许在任何环境中部署,因为站点 URL 在功能激活期间被发现。

于 2015-02-11T14:40:04.463 回答