2011-03-23 124 views
3

背景(或在所有!):我们有一个ClickOnce部署WPF应用程序,该会谈WCF服务,这反过来既要讲我们自己的SQL数据库,并以通过客户端OM进行SharePoint。要建立WCF和ClickOnce的,我们有一个安装项目,这都将在大约从安装用户服务器的路径和数据库连接字符串的详细信息,并触发一个Installer类做有趣的事情就像写XML配置和更新的ClickOnce捆扎机为部署网址等。如何使用VS安装项目部署SharePoint BDC模型包

我们需要添加一些BDC模型通过该安装程序到SharePoint,以便最终用户可以使用SharePoint列表的接口配置一些很少改变的表值在我们的数据库。 (作为“一键式”安装过程尽可能是客户强加的一项要求。)

在我们的Visual Studio 2010解决方案中包括一个BDC Model项目,我们可以为我们的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模型不应该是一个场景的晦涩难懂,但我找不到任何信息或支持如何克服这些问题!

任何人有什么建议吗?

回答

1

我就遇到了这个问题为好。我想将我们的BDC模型打包成一个WSP并通过WSP进行部署。不幸的是(如您所指出的),BDC模型包含必须在每个环境中配置的特定环境信息。

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

+0

考虑到你的团队的方法,而不是使用WSP包,你只需要.bdcm文件松动呢?然后,您可以通过运行PowerShell脚本来导入它们,我猜? – Grank 2011-06-01 16:42:46

+0

我最近发现可以在中央管理员中配置此功能。您也可以为包含此信息的模型维护一个单独的资源文件。在中央管理员中,转到BCS服务应用程序。在右上角的下拉列表中选择“外部系统”。点击你的外部系统。然后点击外部系统实例。 – 2011-06-01 18:11:28

+0

我最终创建了一个参数化的PowerShell脚本来导入一个全包的.bdcm文件。这样做的好处是可以做一些有趣的事情,如:将连接字符串写入模型,确保BDC服务运行,必要时创建BDC服务应用程序,确保Secure Store Service运行,根据需要创建Secure Store Service App,创建Secure Store服务应用程序代理(如有必要),必要时创建安全存储服务目标应用程序,更新密钥,设置元数据存储的权限,为模型中的所有实体创建外部列表...... :) – Grank 2012-02-15 18:22:10

0

如果您想在部署BDC时将其部署到特定的siteURL,请在查看解决方案时转到您的bcd模型的项目文件夹,并在文件夹的属性中查看名为“Feature Properties” 。

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

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

+0

问题是SiteUrl是硬编码到打包的WSP中,开发人员不应该知道它,只需交给客户,让他们安装在他们认为合适的SiteUrl上。 – Grank 2011-07-27 04:18:28

1

两种方法,你可以使用:

  1. 如果您使用的是“自定义”安装类型(而不是DotNetAssembly为您LobSystem型), 可以实现IAdministrable允许您更改属性(LobSystem或LobSystemInstance)在中央管理中。它似乎不适用于DotNetAssemblies,即使IAdministrable已实施。

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

1

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

我能想到的另一个解决方案是使用custom action来修改安装后的文件。

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

+0

感谢您使用高级安装程序,我会检查一下。 – Grank 2012-02-15 18:11:50

相关问题