ソリューション パッケージを展開する (SharePoint Foundation 2010)
適用先: SharePoint Foundation 2010
この記事では、ソリューション パッケージについて、および作成または開発された Microsoft SharePoint Foundation 2010 のカスタマイズ内容を展開するうえでソリューション パッケージが果たす役割について説明します。ソリューション パッケージをインポートおよび展開する手順や、Microsoft Visual Studio 2010 を使用してソリューション パッケージを構築および展開するための例を示します。
この記事の内容
ソリューション パッケージとは
ソリューション パッケージを使用してサイト要素を展開する
Visual Studio 2010 を使用してカスタム Web パーツ ソリューション パッケージを作成および展開する
ソリューション パッケージとは
ソリューション パッケージとは、SharePoint Foundation 2010 のカスタマイズした開発内容をサーバー ファーム内の Web サーバーまたはアプリケーション サーバーに提供する配布パッケージのことです。ソリューションを使用して、カスタム フィーチャー、サイト定義、テンプレート、レイアウト ページ、Web パーツ、カスケード スタイル シート、およびアセンブリのパッケージ化と展開を行います。
この記事では、サンドボックス ソリューションの展開については説明しません。Microsoft SharePoint Foundation 2010 のソリューションは、SharePoint Foundation ファームに直接展開するか、サンドボックスに展開できます。サンドボックスは、制限された実行環境であり、プログラムが特定のリソースのみにアクセスできるようにして、サンドボックスで発生する問題がサーバー環境の他の部分に影響しないようにします。詳細については、「サンドボックス ソリューションの概要 (SharePoint Foundation 2010)」を参照してください。
ソリューション パッケージは、ファイル名拡張子が .wsp の CAB ファイルとマニフェスト ファイルです。SharePoint ソリューションの開発とパッケージ化には Visual Studio 2010 Tools for SharePoint 2010 を使用することをお勧めします。Makecab.exe、SharePoint Packman などのツールを使用して、ソリューション パッケージを手動で作成することもできます。
ソリューションにパッケージできるコンポーネントは次のとおりです。
.NET Framework アセンブリ (通常は Web パーツ アセンブリおよびイベント レシーバー アセンブリ)。
展開ファイル (リソース ファイル、ページ、その他のヘルパー ファイルなど)。
フィーチャー。Web サイトでコードをアクティブ化および非アクティブ化でき、ユーザー設定のリスト、ライブラリ、フィールド、コンテンツ タイプなどの要素が含まれる機能を提供できます。
新しいテンプレートとサイト定義。
Web サーバー レベルで実行する必要のある構成ファイル。たとえば、Web パーツ登録用の Web.config ファイルにカスタマイズを展開する場合などがあります。このような構成は、フィーチャーと一緒に配布するフィーチャーの構成についても変更できます。
Web ページ、Web ページによって呼び出される画像などの Web コンテンツ。非接続環境で Web コンテンツを展開する必要がある場合は、コンテンツ展開パッケージを使用してください。
ソリューション パッケージを使用してサイト要素を展開する
このセクションの内容
ソリューション パッケージを使用する状況
ファーム ソリューションを展開する
ソリューション パッケージをインポートする
ソリューション パッケージを展開する
ソリューション パッケージの作成について
ソリューション パッケージを使用する状況
カスタマイズ内容を展開するための最善の方法は、簡単で、安全で、一貫性のあるアプリケーション ライフサイクル管理プロセスの一部としてソリューション パッケージを使用することです。ソリューション パッケージを使用すると、Web サイトの作成後にサイトのフィーチャーと機能をより簡単に変更できるようになります。
ソリューション パッケージを使用すると、ファーム全体で新しいソリューションを展開し、既存のソリューションをアップグレードできます。SharePoint Foundation のすべてのエンティティを 1 つのファイルにパッケージ化し、そのファイルをソリューション ストアに追加して、ファーム内のフロントエンド Web サーバーに展開できます。ソリューション パッケージを使用してフロントエンド Web サーバーを同期し、サーバーの状態をファーム内の他の Web サーバーの状態と一致させます。
ソリューション パッケージを使用すると、作成サイト要素のカスタマイズ内容を統合ファームから作成ファーム、パイロット ファーム、または運用ファームに展開できます。SharePoint Foundation では、ユーザーはカスタマイズしたサイトをテンプレートとして保存できます。これにより、ファイル名拡張子が .wsp のソリューション パッケージが作成され、他のファームに展開できるようになります。
ソリューション パッケージを使用すると、次の環境の間でカスタマイズ内容を展開できます。
開発者のワークステーションから、統合ファームまたはソフトウェア構成管理システムへ
統合ファームおよび作成クライアント ワークステーションから、パイロット ファームまたは運用ファームへ
ファーム ソリューションを展開する
ファーム ソリューションは、ローカルで展開するか、タイマー サービスを使用して展開します。ローカルの展開とタイマー ベースの展開のどちらも、コマンド ライン命令を使用して実行するか、オブジェクト モデルを使用してプログラムから実行できます。
ローカルの展開
ローカルの展開では、展開処理を開始したコンピューターのみにソリューション ファイルが展開されます。ソリューション ファイルがサーバー ファーム内のすべての対象サーバーに展開されるまで、構成データベースではソリューションが "展開済み" としてマークされません。その後、ソリューションのフィーチャーがインストールされ、スキーマ ファイルと定義ファイルが構成ストアにコミットされます。
タイマー サービスによる展開
タイマー サービスを使用する展開では、タイマー ジョブが作成されます。このタイマー ジョブは、サーバー ファーム内の各 Web サーバーのタイマー サービスに登録されます。最初に、マニフェストとフィーチャー マニフェストが解析されて、アセンブリと _layouts ファイルが検索され、それぞれの場所にコピーされます。フィーチャー ディレクトリ内の他のファイルはすべてフィーチャー ディレクトリにコピーされます。ソリューション ファイルが対象のコンピューターにコピーされた後、すべてのフロントエンド Web サーバーで構成のリセットがスケジュールされます。リセットによってファイルが展開され、Microsoft インターネット インフォメーション サービス (IIS) が再起動されます。その後、ソリューションのフィーチャーが登録され、スキーマ ファイルと定義ファイルが構成ストアにコミットされます。
ソリューション ストア、ソリューションの展開、およびソリューションの同期の詳細については、Microsoft SharePoint 2010 Software Development Kit (SDK) の「ソリューションを展開する」(https://go.microsoft.com/fwlink/?linkid=186995&clcid=0x411) を参照してください。
ソリューション パッケージを追加する
ソリューション パッケージは、展開する前に、SharePoint Foundation ファームのソリューション データベースに追加する必要があります。
重要
Windows PowerShell を実行するコンピューターの Administrators グループのメンバーである必要があります。
Windows PowerShell を使用してソリューション パッケージをインポートするには
次の最小要件を満たしていることを確認します。Add-SPShellAdmin を参照してください。
[スタート] メニューの [すべてのプログラム] をクリックします。
[Microsoft SharePoint 2010 Products] をクリックします。
[SharePoint 2010 管理シェル] をクリックします。
Windows PowerShell コマンド プロンプトで、次のコマンドを入力します。
Add-SPSolution -LiteralPath <SolutionPath>
ソリューションはファームのソリューション ストアに追加されます。ソリューションを使用するには、この記事の次のセクションの手順に従います。詳細については、「Add-SPSolution」を参照してください。
ソリューション パッケージを展開する
インポートしたソリューションは、サーバーの全体管理 Web サイトまたは Windows PowerShell を使用して展開できます。Windows PowerShellAdd-SPSolution コマンドレットを使用してソリューションをソリューション ストアに追加した後、そのソリューションにアクセスするには、ソリューションをサイトに展開する必要があります。
注意
[サーバーの全体管理] の [ソリューション管理] ページでは、ソリューションをソリューション ストアに追加できません。
次の手順では、サーバーの全体管理 Web サイトまたは Windows PowerShell を使用して、インポートしたソリューションをファーム内のサイトに展開する方法を示します。
サーバーの全体管理を使用してソリューションを展開するには
サーバーの全体管理のホーム ページで、[システム設定] をクリックします。
[ファーム管理] セクションで、[ファーム ソリューションの管理] をクリックします。
[ソリューション管理] ページで、展開するソリューションをクリックします。
[ソリューションのプロパティ] ページで、[ソリューションの展開] をクリックします。
[ソリューションの展開] ページの [展開する時刻] セクションで、次のどちらかを選択します。
[今すぐ実行]
[指定時刻]。このオプションを選択した場合、日付と時刻のボックスで時刻を指定します。展開先のサーバーへの負荷が少ない時刻を選択することをお勧めします。
[展開先] セクションの [このソリューションを展開する Web アプリケーションの選択] リストで、[すべてのコンテンツ Web アプリケーション] をクリックするか、特定の Web アプリケーションを選択します。
[OK] をクリックします。
Windows PowerShell を使用してソリューション パッケージを 1 つの Web アプリケーションに展開するには
次の最小要件を満たしていることを確認します。Add-SPShellAdmin を参照してください。
[スタート] メニューの [すべてのプログラム] をクリックします。
[Microsoft SharePoint 2010 Products] をクリックします。
[SharePoint 2010 管理シェル] をクリックします。
Windows PowerShell コマンド プロンプトで、次のコマンドを入力します。
Install-SPSolution -Identity <SolutionName> -WebApplication <URLname>
ここで、
<SolutionName> はソリューションの名前です。
<URLname> は、インポートしたソリューションの展開先となる Web アプリケーションの URL です。
既定では、ソリューションは即座に展開されます。time パラメーターを使用して展開のスケジュールを設定することもできます。詳細については、「Install-SPSolution」を参照してください。
Windows PowerShell を使用してソリューション パッケージをすべての Web アプリケーションに展開するには
次の最小要件を満たしていることを確認します。Add-SPShellAdmin を参照してください。
[スタート] メニューの [すべてのプログラム] をクリックします。
[Microsoft SharePoint 2010 Products] をクリックします。
[SharePoint 2010 管理シェル] をクリックします。
Windows PowerShell コマンド プロンプトで、次のコマンドを入力します。
Install-SPSolution -Identity <SolutionName> -AllWebApplications -time <TimeToDeploy> -GACDeployment -CASPolicies
ここで、
GACDeployment は、SharePoint Foundation 2010 のグローバル アセンブリ キャッシュにアセンブリを展開できるようにするパラメーターです。
CASPolicies を指定すると、カスタム コード アクセス セキュリティ (CAS) ポリシー ファイルを作成して、展開先となるサイト コレクションの Web.config ファイル内でアクティブ化できます。
既定では、ソリューションは即座に展開されます。time パラメーターを使用して展開のスケジュールを設定することもできます。
ソリューション パッケージの作成について
SharePoint Foundation 2010 には、ソリューション パッケージを作成するためのツールは用意されていません。このセクションでは、開発したサイト要素と成果物を含むソリューション パッケージを作成する方法について説明します。
Visual Studio 2010
Visual Studio 2010 を使用すると、関連する SharePoint 要素をフィーチャーにグループ化した後、複数のフィーチャー、サイト定義、アセンブリ、その他のファイルを 1 つのパッケージ (.wsp ファイル) にバンドルして、SharePoint Foundation 2010 を実行しているサーバーに展開できます。Visual Studio 2010 を使用して、開発コンピューターの SharePoint Foundation 2010 を実行しているサーバーで .wsp ファイルをデバッグおよびテストできます。また、開発コンピューターで展開手順をカスタマイズすることもできます。
開発者は Visual Studio 2010 で SharePoint ソリューションを構築し、自動ビルド処理を使用して .wsp ファイルを生成できます。Visual Studio 2010 統合を使用して, .wsp ファイルの生成に使用される Visual Studio SharePoint プロジェクトのソース コードをソース コード管理システムに追加することもできます。Visual Studio 2010 で .wsp ファイルをインポートしてプロジェクトを作成し、それらをさらに拡張することや、新しい .wsp ファイルを作成できます。Visual Studio 2010 にインポートされる .wsp ファイルの主要なソースは、SharePoint Foundation 2010 サイトで [テンプレートとして保存] コマンドを使用してサイトから保存されたテンプレートです。これらのテンプレートを使用すると、サイトのすべてのカスタマイズ内容を SharePoint ソリューションに保存できます。
詳細については、「Visual Studio での SharePoint 開発 (英語)」(https://go.microsoft.com/fwlink/?linkid=187000&clcid=0x411) (英語) を参照してください。
Makecab
Makecab.exe などのツールを使用して、ソリューション パッケージを手動で作成できます。Makecab.exe ツールは、CAB ファイルの構造を表す .ddf ファイルへのポインターを受け取ります。.ddf ファイルの書式は, .inf ファイルの書式に似ています。つまり、標準ヘッダーを宣言した後、一連のファイルを 1 行に 1 ファイルずつ列挙して、ファイルのディスク上の場所と CAB ファイル内の配置を指定します。
Makecab.exe ツールは、「Microsoft Cabinet SDK について」(https://go.microsoft.com/fwlink/?linkid=107292&clcid=0x411) でダウンロードできます。
ソリューション パッケージのカスタマイズについて
SharePoint Foundation 2010 ソリューションで以下のいずれかのカスタマイズを行う必要がある場合は、Visual Studio 2010 を使用してソリューション パッケージをカスタマイズすることをお勧めします。SharePoint ソリューション パッケージを手動で作成して、これらのカスタマイズを行うこともできます。
.NET Framework アセンブリをグローバル アセンブリ キャッシュではなく個人用アプリケーション フォルダーに展開する。
展開中に適用する必要のあるコード アクセス セキュリティ権限をソリューションに追加する。
既定のフィーチャー フォルダー名以外を使用する。
ソリューションをローカライズする。
フィーチャー イベント ハンドラーを Web パーツ ソリューションなど特定の種類の SharePoint Foundation 2010 ソリューションに関連付ける。
リソース (XML ファイル、画像、およびアセンブリ) をソリューション パッケージに追加する。
ソリューション ファイルを手動で作成する
SharePoint Foundation 2010 のほとんどの開発シナリオでは、Visual Studio 2010 Tools for SharePoint 2010 を使用して SharePoint ソリューションを開発およびパッケージ化することをお勧めします。Visual Studio 2010 の展開プロセスでは、SharePoint Foundation 2010 を実行しているサーバーに .wsp ファイルがコピーされ、ソリューションがインストールされた後、フィーチャーがアクティブ化されます。
ソリューション ファイルを手動で作成することもできます。ソリューション ファイルを作成するための基本的な手順は次のとおりです。
個々のソリューション ファイルをすべて 1 つのフォルダーにまとめます。この方法に関するガイドラインは具体化されていませんが、ソリューション ファイルの種類別に専用のサブフォルダーに収集することをお勧めします。
ソリューションのコンポーネントをリストする manifest.xml ファイルを作成します。
ソリューション ファイルの構造を定義する .ddf ファイルを作成します。このファイルには、出力用の .wsp ファイルを指定する個々のソリューション ファイルのリストが含まれています。
入力には .ddf ファイル、出力には .wsp ファイルを使用して Makecab.exe を実行します。
ソリューション マニフェスト ファイルについて
ソリューション マニフェスト (常に manifest.xml という名前になります) は、ソリューション ファイルのルートに格納されます。このファイルでは、処理するフィーチャー、サイト定義、リソース ファイル、Web パーツ ファイル、およびアセンブリのリストが定義されます。ファイル構造は定義されません。ソリューションに含まれていても、manifest.xml ファイルで定義されていないファイルは処理されません。
以下に manifest.xml ファイルの構造の例を XML で示します。
<?xml version="1.0" encoding="utf-8" ?>
<Solution xmlns="https://schemas.microsoft.com/sharepoint/"
SolutionId="{79d1a62e-3627-11db-963e-00e08161165f}"
ResetWebServer="TRUE">
<Assemblies>
<Assembly DeploymentTarget="GlobalAssemblyCache"
Location="Example.Sharepoint.Webparts\
Example.SharePoint.WebParts.dll">
<SafeControls>
<SafeControl Assembly="Example.Sharepoint.Webparts,
Version=1.0.0.0, Culture=Neutral, PublicKeyToken=63cce650e8605f5d"
Namespace="Example.Sharepoint.Webparts" TypeName="*"/>
</SafeControls>
</Assembly>
<Assembly DeploymentTarget="GlobalAssemblyCache"
Location="Example.Sharepoint.Timer/Example.Sharepoint.Timer.dll"/>
</Assemblies>
<FeatureManifests>
<FeatureManifest Location="Example.Sharepoint.Timer\Feature.xml"/>
<FeatureManifest Location="Example.CustomType\Feature.xml"/>
<FeatureManifest Location="Example.ExampleLibrary\Feature.xml"/>
<FeatureManifest Location="Example.Columns\Feature.xml"/>
<FeatureManifest Location="Example.Workflow.ProcessExample\Feature.xml"/>
<FeatureManifest Location="Example.Workflow.ProvisionExample\Feature.xml"/>
</FeatureManifests>
<SiteDefinitionManifests>
<SiteDefinitionManifest Location="EXAMPLE">
<WebTempFile Location="1033\XML\WEBTEMPExample.XML"/>
</SiteDefinitionManifest>
</SiteDefinitionManifests>
</Solution>
さらに、DwpFiles 要素を追加して .webpart ファイルまたは .dwp ファイルを指定したり、ResourceFiles 要素を追加してリソース ファイル、サイト定義、アプリケーション リソース、およびコード アクセス セキュリティ ポリシーを指定したりすることもできます。
必要に応じて、<ElementFile> タグを使用して Feature.xml ファイルに注釈を付けます。
ソリューションにフィーチャーが含まれる場合は、Feature.xml ファイルの <ElementManifests> タグで、ASP.NET ページ (たとえば allitems.aspx)、マスター ページなど、フィーチャー内のすべての追加ファイルについて <ElementFile Location="..."/>
を追加します。
ソリューションの構成要素を定義するソリューション マニフェスト ファイルの詳細については、「Solution Schema (英語)」(https://go.microsoft.com/fwlink/?linkid=183466&clcid=0x411) (英語) を参照してください。
Visual Studio 2010 を使用してカスタム Web パーツ ソリューション パッケージを作成および展開する
Visual Studio 2010 を使用して、プロジェクト タスクを追跡する SharePoint リスト定義を作成、カスタマイズ、デバッグ、および展開する方法を示すチュートリアルについては、MSDN ライブラリの「チュートリアル: プロジェクト タスク リスト定義の配置」 (https://go.microsoft.com/fwlink/?linkid=189612&clcid=0x411) (英語) を参照してください。
このチュートリアルでは、次の作業について説明しています。
タスクが含まれる SharePoint リスト定義プロジェクトの作成。
SharePoint フィーチャーへのリスト定義の追加。
リストへのイベント レシーバーの追加。
フィーチャーを展開する SharePoint パッケージの作成とカスタマイズ。
SharePoint ソリューションのビルドと展開。
このチュートリアルでサンプル プロジェクトをビルドすると、Visual Studio 2010 はテストとデバッグのために、開発コンピューターで SharePoint Foundation 2010 を実行しているサーバーにソリューションを自動的に展開します。また、ソリューション パッケージ ファイルを作成し、それを別のコンピューターに追加および展開することもできます。詳細については、「方法: SharePoint ソリューションを配置する (英語)」 (https://go.microsoft.com/fwlink/?linkid=187004&clcid=0x411) (英語) を参照してください。Add-SPSolutionWindows PowerShell コマンドレットを使用すると、ソリューションを別のコンピューターにインポートできます。
サーバーの全体管理の [ソリューション管理] ページを使用して、ソリューション パッケージを展開できます。また、Install-SPSolutionWindows PowerShell コマンドレットを使用してソリューション パッケージを展開することもできます。
このチュートリアルでは、プロジェクト リスト フィーチャーの範囲は Web です。フィーチャーをアクティブ化するには、Web サイトで [サイトの操作] メニューを展開し、[サイトの設定] をクリックします。[サイトの操作] で、[サイト機能の管理] をクリックします。[機能] ページで、フィーチャー名の横にある [アクティブ化] をクリックします。