Как развернуть пакет модели 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. Судя по звукам, вам может понадобиться запросить информацию о конкретной среде во время установки и каким-то образом использовать ее.
Вы можете использовать два метода:
Если вы используете "пользовательский" тип сборки (вместо DotNetAssembly в качестве типа LobSystem), вы можете реализовать IAdministrable, чтобы позволить вам изменять свойства (либо LobSystem, либо LobSystemInstance) в Central Admin. Кажется, он не работает для DotNetAssemblies, даже если реализован IAdministrable.
Кроме того, вы можете изменить свойства, импортировав файлы ресурсов. Самый простой способ сделать это - импортировать вашу модель, затем экспортировать ее как файл ресурсов и отредактировать файл до свойств, которые вы изменили. Затем импортируйте файл bdcr (ресурс), и вы увидите, что свойства были изменены.
Расширенный установщик предлагает некоторую поддержку для этого. По сути, с помощью редактора XML вы можете использовать свойства установщика Windows вместо жестко заданных значений в файлах манифеста.
Другое решение, которое я могу придумать, - это использовать пользовательское действие для изменения файлов после установки.
В любом случае, для этого требуется сложный установщик, например, пакет MSI. ClickOnce не поддерживает это.
Если вы хотите развернуть свой BDC на определенном siteURL при его развертывании, перейдите в папку проекта для своей модели bcd при просмотре своего решения и в свойствах папки вы должны увидеть что-то под названием "Свойства компонента".
Нажмите на elipsis, чтобы развернуть свойства и добавить заголовок "SiteUrl" и установить его в качестве корня сайта, на котором вы хотите его развернуть: то есть "http://spsite".
Он будет развернут на этом сайте вместо локального.
В нашем случае мы реализовали пользовательский Feature Receiver с использованием инструкций, расположенных в SharePoint 2010, и развертывание модели BCS с использованием пакета свойств фермы для динамического siteurl. Это позволяет развертывать в любой среде, поскольку URL-адрес сайта обнаруживается во время активации функции.