3

背景:ClickOnceでデプロイされたWPFアプリがあります。このアプリはWCFサービスと通信し、WCFサービスは独自のSQLデータベースとクライアントOMを介してSharePointと通信します。WCFとClickOnceをセットアップするために、セットアッププロジェクトがあります。このプロジェクトは、インストールユーザーからサーバーパスとデータベース接続文字列に関する詳細を取得し、インストーラークラスを起動して、構成XMLの記述やそのためのClickOnceストラップの更新などの楽しい作業を行います。デプロイメントURLなど。

エンドユーザーがSharePointリストインターフェイスを使用して、データベース内のめったに変更されないテーブル値の一部を構成できるように、このインストーラーを介してSharePointにいくつかのBDCモデルを追加する必要があります。(可能な限り「ワンクリック」でインストールプロセスを実行することは、クライアントによって課せられる要件です。)

Visual Studio 2010ソリューションにBDCモデルプロジェクトを含めると、BDC関連のパッケージ化されたWSPを取得できます。これは素晴らしいサウンドです...
ただし、これに関する1つの問題は、この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

採用できる2つの方法:

  1. (LobSystemタイプとしてDotNetAssemblyの代わりに)「カスタム」アセンブリタイプを使用している場合は、IAdministrableを実装して、サーバーの全体管理でプロパティ(LobSystemまたはLobSystemInstance)を変更できるようにすることができます。IAdministrableが実装されている場合でも、DotNetAssembliesでは機能しないようです。

  2. または、リソースファイルをインポートしてプロパティを変更することもできます。これを行う最も簡単な方法は、モデルをインポートしてから、それをリソースファイルとしてエクスポートし、変更する必要のあるプロパティまでファイルを編集することです。次に、bdcr(リソース)ファイルをインポートすると、プロパティが変更されたことが示されます。

于 2011-11-30T17:34:15.500 に答える
1

Advanced Installerはこれをサポートしています。基本的に、XML エディターを使用すると、マニフェスト ファイルにハードコードされた値の代わりに、Windows インストーラーのプロパティを使用できます。

私が考えることができる他の解決策は、インストール後にカスタム アクションを使用してファイルを変更することです。

いずれにせよ、これには MSI パッケージのような複雑なインストーラーが必要です。ClickOnce はサポートしていません。

于 2011-11-30T21:38:14.767 に答える
0

BDC を展開するときに特定の siteURL に展開する場合は、ソリューションを表示するときに bcd モデルのプロジェクト フォルダーに移動し、フォルダーのプロパティに "Feature Properties" と呼ばれるものが表示されるはずです。

省略記号をクリックしてプロパティを展開し、「SiteUrl」という見出しを追加して、デプロイするサイトのルートに設定します (例: 「http://spsite」)。

ローカルのサイトではなく、そのサイトに展開されます。

于 2011-07-26T19:45:09.700 に答える