Как развернуть пакет модели SharePoint BDC с помощью проекта установки VS (или вообще!)

Предыстория: у нас есть приложение WPF, развернутое ClickOnce, которое взаимодействует со службами WCF, которые, в свою очередь, взаимодействуют как с нашей собственной базой данных SQL, так и с SharePoint через клиентскую OM. Чтобы настроить WCF и ClickOnce, у нас есть проект Setup, в котором подробно рассматриваются пути к серверу и строки подключения к базе данных от пользователя, устанавливающего программу, и запускается класс Installer для таких забавных вещей, как написание config XML и обновление для этого стриппера ClickOnce. URL развертывания и тому подобное.

Нам нужно добавить некоторые модели BDC в SharePoint с помощью этого установщика, чтобы конечные пользователи могли использовать интерфейсы списков SharePoint для настройки некоторых редко изменяемых табличных значений в нашей базе данных. (Поскольку процесс установки выполняется одним щелчком, это требование клиента.)

Включив проект BDC Model в наше решение Visual Studio 2010, мы можем получить упакованный WSP для нашего BDC, который звучит великолепно...
Одна проблема с этим, однако, заключается в том, что в файле feature.xml, который упакован в этот WSP, появляется эта жестко закодированная строка:

<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>

Это также должно быть переписано установщиком, как только установочный пользователь предоставит информацию о соединении с базой данных.

Я также не уверен, что будет лучшим подходом для фактической установки WSP на сервер через MSI (попытка выполнить скрипт powershell - это все, что я до сих пор думал).

Мне кажется, что разработка моделей BDC для сторонних разработчиков не должна быть настолько непонятной для сценария, но я не могу найти никакой информации или поддержки о том, как преодолеть любую из этих проблем!

У кого-нибудь есть совет?

5 ответов

Решение

Я столкнулся с этой проблемой также. Я хотел бы упаковать нашу модель BDC в WSP и развернуть ее через WSP. К сожалению (как вы указали) модель BDC содержит определенную информацию о среде, которую необходимо настроить для каждой среды.

Мы получили доступ к различным моделям BDC и просто импортировали их, а не упаковывали в WSP. Судя по звукам, вам может понадобиться запросить информацию о конкретной среде во время установки и каким-то образом использовать ее.

Вы можете использовать два метода:

  1. Если вы используете "пользовательский" тип сборки (вместо DotNetAssembly в качестве типа LobSystem), вы можете реализовать IAdministrable, чтобы позволить вам изменять свойства (либо LobSystem, либо LobSystemInstance) в Central Admin. Кажется, он не работает для DotNetAssemblies, даже если реализован IAdministrable.

  2. Кроме того, вы можете изменить свойства, импортировав файлы ресурсов. Самый простой способ сделать это - импортировать вашу модель, затем экспортировать ее как файл ресурсов и отредактировать файл до свойств, которые вы изменили. Затем импортируйте файл bdcr (ресурс), и вы увидите, что свойства были изменены.

Расширенный установщик предлагает некоторую поддержку для этого. По сути, с помощью редактора XML вы можете использовать свойства установщика Windows вместо жестко заданных значений в файлах манифеста.

Другое решение, которое я могу придумать, - это использовать пользовательское действие для изменения файлов после установки.

В любом случае, для этого требуется сложный установщик, например, пакет MSI. ClickOnce не поддерживает это.

Если вы хотите развернуть свой BDC на определенном siteURL при его развертывании, перейдите в папку проекта для своей модели bcd при просмотре своего решения и в свойствах папки вы должны увидеть что-то под названием "Свойства компонента".

Нажмите на elipsis, чтобы развернуть свойства и добавить заголовок "SiteUrl" и установить его в качестве корня сайта, на котором вы хотите его развернуть: то есть "http://spsite".

Он будет развернут на этом сайте вместо локального.

В нашем случае мы реализовали пользовательский Feature Receiver с использованием инструкций, расположенных в SharePoint 2010, и развертывание модели BCS с использованием пакета свойств фермы для динамического siteurl. Это позволяет развертывать в любой среде, поскольку URL-адрес сайта обнаруживается во время активации функции.

Другие вопросы по тегам