次の方法で共有


開発サイト要素のカスタマイズ内容を展開する

この記事の内容 :

  • ソリューション パッケージを使用して開発サイト要素を展開する

  • フィーチャーを使用して開発サイト要素を展開する

この記事では、Microsoft Office SharePoint Server 2007 を使用した開発サイト要素のカスタマイズ内容の展開について、展開の手順、一般的な考慮事項、カスタム コードの展開に関連するベスト プラクティスなど、ガイダンスを提供します。

開発サイト要素とは、サイトに機能を提供するアプリケーションやファイルのことです。たとえば、ビジネス プロセスを実装するワークフローや、ユーザーによる特定デザイン サイトの作成を可能にするサイト テンプレートがあります。開発サイト要素はファームの Web サーバー上に展開しますが、ファームの中間層にある専用のアプリケーション サーバー上に展開する場合もあります。

この記事のセクションでは、ソリューション パッケージやフィーチャーのインポート、エクスポート、作成の手順など、Office SharePoint Server 2007 での開発サイト要素を展開するさまざまな方法の進め方について説明します。

この記事では、Web ページ、カスケード スタイル シート、レイアウト ページなど、作成サイト要素の展開については説明されません。作成サイト要素の展開の詳細については、「作成サイト要素のカスタマイズ内容を展開する」を参照してください。作成サイト要素と開発サイト要素の相違点の詳細については、「サイト要素の確認」を参照してください。

この記事を読むにあたっては、サイトの設計と構築に関連する概念について精通しておく必要があります。詳細については、「サイトの設計と構築について」を参照してください。

この記事の手順は、「カスタマイズ シナリオ」で説明されているトポロジに基づいており、必ずしもお使いの環境に適合しているとは限りません。

これらの手順では、いくつかの異なる役割にわたる共同作業が必要になる場合があります。また、この記事では、いくつかのトポロジ層間でコンテンツを移行する際、スケジュールされた展開ジョブを使用することを前提としています。

注意

同期に関する問題の発生を防ぐには、多くの場合、開発サイト要素を作成サイト要素の前に展開する必要があります。作成サイト要素と開発サイト要素の詳細については、「サイト要素の確認」を参照してください。また、ソース サーバーで使用されている言語は展開先のサーバーにもすべてインストールしないと、コンテンツの展開が失敗しますので注意してください。

次の表に、この記事で説明されている展開方法の概要を示します。

方法 メモ

ソリューション パッケージ

ソリューション パッケージは、サーバー ファーム内の Web サーバーまたはアプリケーション サーバーに、Office SharePoint Server 2007 および Windows SharePoint Services 3.0 のカスタマイズした開発内容を提供する配布パッケージです。

ソリューション パッケージを使うと、次のことを行えます。

  • 接続環境と非接続環境の両方で開発サイト要素を展開する。

  • 同じパッケージにデザイン要素と開発サイト要素を展開する。

ソリューション パッケージでは、デザイン要素以外の作成サイト要素を展開することはできません。

フィーチャー

フィーチャーは、Web サーバーに展開される XML ファイルのパッケージ セットです。フィーチャーは、サイト定義とソリューションにバンドルするか、Office SharePoint Server サイトで個々にアクティブ化できます。

フィーチャーを使うと、次の操作を行うことができます。

  • 接続環境と非接続環境の両方で開発サイト要素を展開する。

  • [サーバーの全体管理] Web サイト、または Stsadm コマンドライン ツールを使用して、カスタマイズをアクティブ化/非アクティブ化する。

  • 展開の範囲を制御する。

  • フィーチャーを、別のフィーチャー、開発サイト要素、およびデザイン要素と共にソリューション パッケージに含める。

フィーチャーを使って、作成サイト要素を展開することはできません。

次のセクションでは、表に挙げたそれぞれの展開方法について詳細に説明します。

ソリューション パッケージを使用して開発サイト要素を展開する

このセクションの内容 :

  • ソリューション パッケージとは

  • ソリューション パッケージを使用する状況

  • [サーバーの全体管理] を使用してソリューションを展開する

  • ソリューション パッケージを作成する

  • Stsadm コマンドライン ツールを使用してソリューション パッケージをインポートする

  • Stsadm コマンドライン ツールを使用してソリューション パッケージを展開する

ソリューション パッケージとは

ソリューション パッケージとは、サーバー ファーム内の Web サーバーまたはアプリケーション サーバーに、Office SharePoint Server 2007 および Windows SharePoint Services 3.0 のカスタマイズした開発内容を提供する配布パッケージのことです。ソリューション パッケージは、ファイル名拡張子が .wsp の CAB ファイルと、マニフェスト ファイルです。Makecab.exe などのツールを使用して手動で作成するか、Solution Generator を使用して作成できます。Solution Generator はスタンドアロンのアプリケーションで、「Windows SharePoint Services 3.0 Tools: Visual Studio 2005 Extensions (英語)」(https://go.microsoft.com/fwlink/?linkid=107267&clcid=0x411) から取得できます。

ソリューションにパッケージできるコンポーネントは次のとおりです。

  • ソリューションを駆動するコードをラップする .NET Framework アセンブリ。

  • リソース ファイル、画像、その他のヘルパー ファイルなど、展開ファイル。

  • サイト、リスト、ライブラリ、フィールド、コンテンツ タイプなど、新しいテンプレートおよび定義。これらの定義は CAML ベースの XML ファイル形式です。

  • フィーチャー。Web サイトでコードをアクティブ化および非アクティブ化できます。

  • Web サーバー レベルで実行する必要のある構成ファイル。たとえば、Web パーツ登録用の Web.config ファイルなどがあります。

詳細については、「ソリューション パッケージのコンポーネント」を参照してください。

ソリューション パッケージを使用する状況

ソリューション パッケージを使用すると、開発サイト要素とデザイン要素 (「作成サイト要素のカスタマイズ内容を展開する」で説明) を提供できます。また、ソリューション パッケージによって、非接続環境で開発サイト要素を展開したり、ソフトウェア構成管理システムに開発サイト要素を保存したりすることもできます。

次のうち 1 つ以上の状況に該当する場合、ソリューション パッケージを使用して開発サイト要素を展開できます。

  • 非接続環境 ファームが切断されている場合、統合ファームへの非同期転送のためにソリューション パッケージを作成する必要があります。

  • ソフトウェア構成管理環境 ソリューション パッケージに開発処理を統合して、ソフトウェア構成管理システムに提供できます。

  • フィーチャーおよびその他の開発サイト要素を含める フィーチャーとその他のカスタマイズ内容を 1 つのソリューション パッケージに含めることができます。カスタマイズ内容の中でフィーチャーにパッケージするものとしないものがある場合は、ソリューション パッケージを標準的な展開手段として使用できます。

  • デザイン要素と開発サイト要素の同時提供 デザイン要素と開発サイト要素の両方を 1 つの展開パッケージで展開する場合にソリューション パッケージを使用できます。

  • スクリプトによる展開 スクリプトを作成して開発サイト要素の展開プロセスを自動化する場合にソリューション パッケージを使用できます。

カスタマイズ シナリオ」の展開図に示されているように、ソリューション パッケージを使用すると、開発者のワークステーションと統合ファームまたはソフトウェア構成管理システムの間で、および、統合ファームと作成クライアント ワークステーションやパイロット ファームまたは生産ファームの間で、開発サイト要素のカスタマイズ内容を展開できます。

[サーバーの全体管理] を使用してソリューションを展開する

[サーバーの全体管理] サイトからインポートしたソリューションを展開できます。この記事の後のセクション、「Stsadm コマンドライン ツールを使用してソリューション パッケージをインポートする」で説明するように、Stsadm -Addsolution 操作を使用してソリューション データベースにソリューションをインポートしたら、ソリューションを使用できるようにサイトに展開する必要があります。

注意

[サーバーの全体管理] の [ソリューション管理] ページでは、ソリューションをインポートできません。

次の手順で、インポートしたソリューションをファーム内のサイトに展開する方法を示します。

[サーバーの全体管理] サイトでソリューションを展開する

  1. [サーバーの全体管理] サイトの一番上のリンク バーで、[サーバー構成の管理] をクリックします。

  2. [サーバー構成の管理] ページの [グローバル構成] セクションで、[ソリューション管理] をクリックします。

  3. [ソリューション管理] ページで、展開するソリューションをクリックします。

  4. [ソリューションのプロパティ] ページで、[ソリューションの展開] をクリックします。

  5. [ソリューションの展開] ページの [展開する時刻] セクションで、次のいずれかを選択します。

    • [今すぐ実行]。

    • [指定時刻]。このオプションを選択した場合、[日付と時刻] ボックスで時刻を指定します。展開先のサーバーへの負荷が少ない時刻を選択することをお勧めします。

  6. [展開先] セクションの [このソリューションを展開する Web アプリケーションの選択] リストで、[すべてのコンテンツ Web アプリケーション] をクリックするか、特定の Web アプリケーションを選択します。

  7. [OK] をクリックします。

ソリューション パッケージを作成する

このセクションでは、開発サイト要素とデザイン要素を含むソリューション パッケージの作成方法について説明します。ソリューション パッケージを作成するにはさまざまな方法があります。次の表に、このセクションで説明されている方法の概要を示します。

方法 説明

手動

ソリューション パッケージは、Makecab.exe ツールを使用して手動で作成できます。Office SharePoint Server 2007 にはソリューション パッケージ作成用のツールがないため、これが標準の方法になります。

Makecab.exe ツールは、「Microsoft Cabinet SDK について」(https://go.microsoft.com/fwlink/?linkid=107292&clcid=0x411) でダウンロードできます。

SharePoint Solution Generator

SharePoint Solution Generator は、Office SharePoint Server 2007 または Windows SharePoint Services 3.0 のいくつかの種類の Web サイトを Visual Studio 2005 サイト定義プロジェクトに変換できるスタンドアロンのアプリケーションです。サイト要素のカスタマイズに Visual Studio 2005 を使用する場合、この方法が役に立つ場合があります。

SharePoint Solution Generator は、「Windows SharePoint Services 3.0 Tools: Visual Studio 2005 Extensions (英語)」(https://go.microsoft.com/fwlink/?linkid=107267&clcid=0x411) でダウンロードできます。

WSPBuilder

WSPBuilder は、ソリューション パッケージの作成プロセスを自動化するためのオープンソースのコマンドライン ツールです。この方法は、ソリューション パッケージを定期的に作成する場合、またお使いの環境でオープンソース ツールの使用を制限されていない場合に役に立つことがあります。

WSPBuilder ツールは、「Codeplex (英語)」(https://go.microsoft.com/fwlink/?linkid=106471&clcid=0x411) でダウンロードできます。

ソリューション パッケージを手動で作成する

Office SharePoint Server 2007 ソリューションの開発者は、次のいずれかを実行する必要がある場合に SharePoint ソリューション パッケージを手動で作成することがよくあります。

  • .NET Framework アセンブリをグローバル アセンブリ キャッシュではなく個人用アプリケーション フォルダに展開する。

  • 展開中に適用する必要のあるコード アクセス セキュリティ権限をソリューションに追加する。

  • 既定のフィーチャー フォルダ名以外を使用する。

  • ソリューションをローカライズする。

  • Feature イベント ハンドラを Web パーツ ソリューションなどのいくつかの種類の Windows SharePoint Services 3.0 ソリューションに関連付ける。

  • リソース (XML ファイル、画像、およびアセンブリ) をソリューション パッケージに追加する。

ソリューション ファイルを手動で作成するには、次の基本的な手順を実行します。

  1. 個々のソリューション ファイルをすべて 1 つのフォルダにまとめます。この方法に関するガイドラインは具体化されていませんが、ソリューション ファイルの種類別に専用のサブフォルダに収集することをお勧めします。

  2. ソリューションのコンポーネントの一覧にした manifest.xml ファイルを作成します。

  3. Windows SharePoint Services 3.0 ソリューション ファイルの構造を定義する .ddf ファイルを作成します。このファイルには、出力用の .wsp ファイルを指定する個々のソリューション ファイルのリストが含まれています。

  4. 入力には .ddf ファイル、出力には .wsp ファイルを使用して Makecab.exe を実行します。

次の手順では、上記の基本的な手順について詳細に説明します。

注意

この手順を実行するには、Makecab.exe ツールが必要になります。このツールは、「Microsoft Cabinet SDK について」(https://go.microsoft.com/fwlink/?linkid=107292&clcid=0x411) でダウンロードできます。

Makecab.exe を使用してソリューション パッケージを手動で作成する

  1. ソリューションの manifest.xml ファイルを作成します。

    ソリューション マニフェスト (常に 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 要素を追加してリソース ファイル、サイト定義、アプリケーション リソース、およびコード アクセス セキュリティ ポリシーを指定したりすることもできます。

  2. 必要に応じて、<ElementFile> タグで Feature.xml ファイルに注釈を付けます。

    Feature.xml ファイル内の <ElementManifests> タグで、Active Server Page Extension (ASPX) ページ (たとえば、allitems.aspx)、マスタ ページなど、フィーチャー内のすべての追加ファイルについて、<ElementFile Location="..."/> を追加します。

    注意

    この手順が必要なのは、ソリューションにフィーチャーを格納する場合だけです。

  3. ソリューション パッケージ (.wsp ファイル) を作成します。

    ソリューション ファイルの実体は CAB ファイルなので、ソリューション パッケージの作成には Makecab.exe ツールを使用します。Makecab.exe ツールは、CAB ファイルの構造が記述された .ddf ファイルへのポインタを受け取ります。.ddf ファイルの形式は, .inf ファイルの形式に類似しています。つまり、標準ヘッダーを宣言してから、一連のファイルを 1 行に 1 ファイルずつ列挙して、そのディスク上の場所と、それが CAB ファイル内のどこにあるかを指定します。たとえば以下のとおりです。

    ; .OPTION EXPLICIT    

    ; Generate errors

    .Set CabinetNameTemplate=MySolutionFile.wsp

         .set DiskDirectoryTemplate=CDROM

    ; All cabinets go in a single directory

    .Set CompressionType=MSZIP

    ;** All files are compressed in cabinet files

    .Set UniqueFiles="ON"

    .Set Cabinet=on

    .Set DiskDirectory1=Package build\manifest.xml manifest.xml build\

    MySolutionFile\Feature.xml MySolutionFile\Feature.xml ...

[ウォークスルー] カスタム Web パーツ ソリューション パッケージを生成および展開する

このセクションでは、カスタム Web パーツを含むソリューション パッケージを構築および展開する方法の例について説明します。このウォークスルーでは、Visual Studio 2005 および Makecab.exe ツールを使用する必要があります。

Office SharePoint Server 2007 では、開発者がフィーチャーをインストール、アクティブ化、非アクティブ化、またはアンインストールするときにカスタム コードを実行するためのオプションが提供されます。その例として、特定のタスク リストに依存する Web パーツがあります。Web パーツ フィーチャーをアクティブ化するときに、カスタム コードによって、このタスク リストがサイト内のリストに含まれているかどうかを確認できます。含まれていない場合、コードによってリストが作成され、フィーチャーを非アクティブ化するときにリストが削除されます。このカスタム コードは、フィーチャー レシーバ アセンブリと呼ばれる .NET Framework アセンブリにラップされます。

このウォークスルーでは、既に Web パーツ プロジェクトが作成されていることが前提になっています。Web パーツ フィーチャーをインストール、アクティブ化、非アクティブ化、またはアンインストールするとき、Office SharePoint Server では非同期のイベントが発生します。これらのイベントは、Microsoft.SharePoint.SPFeatureReceiver 抽象クラスから継承される .NET Framework クラスを作成することによって、カスタム .NET Framework アセンブリ内で処理できます。

[ウォークスルー] カスタム Web パーツ ソリューション パッケージを生成および展開する

  1. C# で次の .NET クラスを作成します。

    using System;
    using System.Diagnostics;
    using System.Collections.Generic;
    using System.Text;
    using Microsoft.SharePoint;
    
    namespace MSDN.Samples
    {
        public class MSDNTaskListEventHandler: SPFeatureReceiver
        {
            public override void 
    FeatureActivated(SPFeatureReceiverProperties properties)
            {
                SPSite sitecollection = 
    (SPSite)properties.Feature.Parent;
                SPWeb web = sitecollection.RootWeb;
                try
                {
                    // -- Check if list exists.
                    SPList list = web.Lists["MSDN Tasks"]; 
                }
                catch 
                {
                    // -- If not, create the list.
                    web.Lists.Add("MSDN Tasks", "A custom list", SPListTemplateType.Tasks);
                }
            }
    
            public override void 
    FeatureDeactivating(SPFeatureReceiverProperties properties)
            {
                SPSite sitecollection = (SPSite)properties.Feature.Parent;
                SPWeb web = sitecollection.RootWeb;
                try
                {
                    // -- Check if list is there, and if so, delete it.
                    SPList list = web.Lists["MSDN Tasks"];
                    web.Lists.Delete(list.ID);
                }
                catch (Exception ex)
                {
                }
            }
    
            public override void 
    FeatureInstalled(SPFeatureReceiverProperties properties)
            {
            }
    
            public override void 
    FeatureUninstalling(SPFeatureReceiverProperties properties)
            {
            }
        }
    }
    

    コーディング処理によって 2 つのアセンブリが生成されます。一方のアセンブリには、Web パーツを提供するコードが含まれています。もう一方のアセンブリには、古いコードが含まれています。この記事の発行時点において、Visual Studio Extensions for Windows SharePoint Services 3.0 では、イベント ハンドラと Web パーツ フィーチャーの定義ファイルを関連付けることはできません。また、Web パーツ アセンブリは、グローバル アセンブリ キャッシュではなく個人用アプリケーション フォルダに展開する必要があります。このため、ソリューション パッケージを手動で作成する必要があります。

    注意

    次の手順では、ソリューション コンポーネントを表すさまざまなファイルの整理方法を独自の設定に合わせて調整でき、Visual Studio 2005 ソリューションに含めることができます。

  2. ソリューション コンポーネントをまとめるため、1 つのフォルダと、その中に 2 つのサブフォルダを作成します。1 つ目のサブフォルダ (この記事ではフォルダ名を "Assemblies" とします) にはアセンブリを格納し、2 つ目のサブフォルダ (この記事ではフォルダ名を "Features" とします) にはフィーチャーを定義するさまざまな XML ファイルを格納します。Assemblies フォルダに Web パーツ アセンブリとイベント ハンドラ アセンブリをコピーします。

  3. SharePoint ソリューションに含める必要のあるフィーチャーごとに、Features フォルダの下にサブフォルダを作成します。このウォークスルーでは、フィーチャーは 1 つのみとします。このフィーチャーを MSDNTaskCreator と呼ぶとすると、Features フォルダには MSDNTaskCreator という名前のサブフォルダが含まれます。このフォルダのルートに、次の XML を含む Feature.xml ファイルを追加します。

    <Feature  Title="MSDNTaskCreator" 
              Id="55312295-a323-4333-b875-1bbe8ef7fd04" 
              Description="Small Web Part creating a custom task item" 
              Version="1.0.0.0" Scope="Site" Hidden="FALSE" 
              ReceiverAssembly="MSDNFeatureEventhandlers, 
    Version=1.0.0.0, Culture=neutral, PublicKeyToken=5e5a470a5445a8f1" 
              ReceiverClass="MSDN.Samples.MSDNTaskListEventHandler"
              DefaultResourceFile="core" 
    xmlns="https://schemas.microsoft.com/sharepoint/">
      <ElementManifests>
        <ElementManifest Location="elementManifest.xml" />
        <ElementFile Location="MSDNTaskCreator.webpart" />
      </ElementManifests>
    </Feature>
    

    この XML は、次の 2 つの属性が Feature.xml ファイルに追加されている点で、Visual Studio Extensions for Windows SharePoint Services 3.0 で生成される XML とは異なります。

    • ReceiverAssembly 属性。イベント ハンドラ コードを含む .NET Framework アセンブリの完全な厳密な名前が格納されます。

    • ReceiverClass 属性。.NET Framework アセンブリ内のクラスの完全な名前が格納されます。

  4. ルート フォルダにマニフェスト ファイルを作成します。これは、Visual Studio Extensions for Windows SharePoint Services 3.0 によって生成されるマニフェスト ファイルとは異なります。以下はその内容です。

    <Solution SolutionId="d63d0395-96a4-449e-83ce-5f7239bbd3ad"

    xmlns="https://schemas.microsoft.com/sharepoint/" >

      <FeatureManifests>

        <FeatureManifest Location="MSDNTaskCreator\Feature.xml" />

      </FeatureManifests>

      <Assemblies>

        <Assembly Location="MSDNTaskCreator.dll"

    DeploymentTarget="WebApplication" >

          <SafeControls>

            <SafeControl Assembly="MSDNTaskCreator, Version=1.0.0.0,

    Culture=neutral, PublicKeyToken=9f4da00116c38ec5"

    Namespace="MSDN.Samples" TypeName="MSDNTaskCreator" Safe="True" />

          </SafeControls>

        </Assembly>

            <Assembly Location="MSDNFeatureEventHandlers.dll"

    DeploymentTarget="GlobalAssemblyCache" />

      </Assemblies>

    </Solution>

    フィーチャーの名前には GUID が含まれなくなったので注意してください。1 つ目のアセンブリ要素には、DeploymentTarget という名前で、値が GlobalAssemblyCache ではなく WebApplication の属性が含まれています。.NET Framework アセンブリの定義を含む 2 つ目のアセンブリ要素には、グローバル アセンブリ キャッシュに展開するイベント ハンドラ コードが含まれています。

  5. この場合、.wsp_structure.ddf という名前の .ddf ファイルを作成できるようになります。.ddf ファイルは DeploymentFiles フォルダに直接作成します。まず、次のヘッダー情報を追加します。

    ;

    ; *** .ddf file for generating SharePoint solution.

    ;

    .OPTION EXPLICIT ; Generate errors

    .Set CabinetNameTemplate=MSDNTaskCreatorWebPart.wsp

    .set DiskDirectoryTemplate=CDROM ; All cabinets go in a single

    directory

    .Set CompressionType=MSZIP;** All files are compressed in cabinet

    files

    .Set UniqueFiles="ON"

    .Set Cabinet=on

    .Set DiskDirectory1=Package

    ヘッダーは次の 2 つの部分で構成されます。

    • CabinetNameTemplate 。SharePoint ソリューション ファイル (MSDNTaskCreatorWebPart.wsp) の名前に設定されます。

    • DiskDirectory1Package に設定されます。これは、生成された .wsp ファイルを含むディレクトリです。

    .ddf ファイルの 2 つ目の部分は、パッケージの構造を定義します。

    ; *** the manifest file

    manifest.xml manifest.xml

    ; *** the feature files

    Features\MSDNTaskCreator\Feature.xml MSDNTaskCreator\Feature.xml

    Features\MSDNTaskCreator\elementManifest.xml MSDNTaskCreator\elementManifest.xml

    Features\MSDNTaskCreator\MSDNTaskCreator.webpart

    MSDNTaskCreator\MSDNTaskCreator.webpart

    ; *** the assemblies

    Assemblies\MSDNTaskCreator.dll MSDNTaskCreator.dll

    Assemblies\MSDNFeatureEventhandlers.dll MSDNFeatureEventhandlers.dll

    .ddf ファイルは Makecab.exe の入力用です。Makecab.exe は、このセクションの前半で説明したように、Microsoft Cabinet SDK をインストールして入手できるツールです。Makecab.exe は、Smart Devices SDK (既定では \Program Files\Microsoft Visual Studio 8\SmartDevices\SDK\SDKTools に保存) にもあります。

  6. パッケージ化と展開を容易にするには、次の内容でバッチ ファイルを作成します。

    set MakeCabTool=c:\Program Files\Microsoft Visual Studio 8\

    SmartDevices\SDK\SDKTools\Makecab.exe

    set SPAdminTool=%CommonProgramFiles%\Microsoft Shared\

    web server extensions\12\BIN\stsadm.exe

    "%MakeCabTool%" /f wsp_structure.ddf

    "%SPAdminTool%" -o addsolution -filename package\

    MSDNTaskCreatorWebPart.wsp

    "%SPAdminTool%" -o deploysolution -name MSDNTaskCreatorWebPart.wsp

    -immediate -allowGACDeployment -url <URL name>

    最初の 2 行は、Makecab と Stsadm コマンドライン ツールへのパスの設定です。次の行では、ソリューション パッケージを作成します。

    Makecab.exe /f wsp_structure.ddf
    

    実行の結果、MSDNTaskCreatorWebPart.wsp がパッケージ フォルダに作成されます。次の行では、以下のコマンドを実行して、MSDNTaskCreatorWebPart.wsp をサーバー ファーム内のソリューション ストアに追加します。

    stsadm.exe -o addsolution -filename 
    Package\MSDNTaskCreatorWebPart.wsp
    

    バッチ ファイルの最後の行では、ソリューションをサイト コレクションの 1 つに展開します。

  7. ソリューション パッケージを展開するには、[サーバーの全体管理] の [サーバー構成の管理] タブにある [ソリューション管理] リンクを使用するか、コマンド プロンプトで次のコマンドを実行します。

    cd %COMMONPROGRAMFILES%\Microsoft shared\Web server extensions\12\bin

    stsadm -o deploysolution -name MSDNTaskCreatorWebPart.wsp -local -allowGACDeployment -url < URL 名 >

    これで Web パーツ フィーチャーがインストールされました。ただしまだアクティブ化されていません。

  8. フィーチャーをアクティブ化するには、[サイト コレクションの機能] ページを開き、フィーチャー名の横にある [アクティブ化] ボタンをクリックします。FeatureActivated イベントの発生時にコードが実行されるため、MSDN タスク リストが作成されます。このフィーチャーを非アクティブ化すると、サイト コレクションのルート サイトからタスク リストが削除されます。

SharePoint Solution Generator を使用してソリューション パッケージを作成する

SharePoint Solution Generator は、Office SharePoint Server 2007 または Windows SharePoint Services 3.0 のいくつかの種類の Web サイトを Visual Studio 2005 サイト定義プロジェクトに変換できるスタンドアロンのアプリケーションです。SharePoint Solution Generator でサポートされないコンテンツには次のものがあります。

  • Wiki サイト、発行ポータル、グループ作業ポータルなど、一部のサイトおよびリストのテンプレート

  • ルックアップ フィールドとカスタム フィールドの種類

  • 一部のサイト設定およびリスト設定

SharePoint Solution Generator の詳細については、「Windows SharePoint Services 3.0 Tools: Visual Studio 2005 Extensions (英語)」(https://go.microsoft.com/fwlink/?linkid=107267&clcid=0x411) を参照してください。

SharePoint Solution Generator ユーザー インターフェイスを使用すると、カスタマイズされたサイトを SharePoint ソリューションにコンパイルして、別の SharePoint ファームに展開できます。ソリューションがファームにインポートされると、次のように一部のカスタマイズ内容が失われる場合があります。

  • ルックアップ列が、列を含むすべてのリストからなくなる。

  • サイトのサイド リンク バーのカスタマイズ内容が失われる。

  • ページ上に構成された Web パーツが失われる。

  • カスタム リスト アイテムのイベント レシーバがリストにアタッチされなくなる。

詳細については、「ツールとプロセスのレビュー」を参照してください。

サイトの準備中にカスタム アクションを実行する

ソリューション ファイルにより、サイトの準備中にカスタム アクションを実行する手段が与えられます。生成されたソリューション ファイルには、SiteProvisioning.cs というクラスを含む Site Provisioning Handler というフォルダがあります。このクラスには、カスタム コードを追加できる OnActivated メソッドがあります。このメソッドは、サイト定義を使用して新しいサイトを準備中に呼び出されます。また、このメソッドには、SPFeatureReceiverProperties という種類の名前付きプロパティのパラメータを 1 つ使用できます。このパラメータを使用して、次のコードを指定することによって、SPSite オブジェクトと SPWeb オブジェクトを見つけることができます。

SPWeb web;
SPSite site;
if (properties.Feature.Parent is SPWeb)
{
    web = properties.Feature.Parent as SPWeb;
    site = web.Site;
}
Else
{
    site = properties.Feature.Parent as SPSite;
    web = site.RootWeb;
}

WSPBuilder を使用してソリューション パッケージを作成する

SharePoint 製品とテクノロジのいくつかのオープンソース ツールやコミュニティ作成ツールは、インターネット上に公開されたサイトからダウンロードできます。Microsoft はこれらのサイトにあるサードパーティ プロジェクトを管理、検討、修正、承認、または配布しませんが、中には一般的な操作を実行するのに便利なツールもあります。

WSPBuilder は、ソリューション パッケージの作成プロセスを自動化するためのコマンドライン ツールです。WSPBuilder は、フォルダを再帰的にスキャンして、フォルダ構造内のファイルに基づいて manifest.xml ファイル, .wsp ファイルなど、SharePoint ソリューション パッケージを作成します。

WSPBuilder ツールは、「Codeplex (英語)」(https://go.microsoft.com/fwlink/?linkid=106471&clcid=0x411) でダウンロードできます。

Stsadm コマンドライン ツールを使用してソリューション パッケージをインポートする

ソリューション ファイルを Office SharePoint Server ファームのソリューション データベースにインポートするには、次の手順に従います。

重要

この場合、Stsadm コマンドライン ツールを実行するコンピュータで Administrators グループのメンバである必要があります。

Stsadm コマンドライン ツールを使用してソリューション パッケージをインポートする

  1. ソリューションをインポートするファーム内のサーバーの、SharePoint 製品とテクノロジがインストールされているドライブ上で、コマンド プロンプトに次のコマンドを入力して Stsadm コマンドライン ツールが格納されているディレクトリに変更します。

    cd %COMMONPROGRAMFILES%\Microsoft shared\Web server extensions\12\bin

  2. 次のコマンドを入力します。

    stsadm -addsolution -filename <ソリューション名>

ソリューションはファームのソリューション データベースに追加されます。ソリューションを使用するには、この記事の次のセクションの手順に従います。詳細については、「Addsolution : Stsadm 操作 (Office SharePoint Server)」を参照してください。

Stsadm コマンドライン ツールを使用してソリューション パッケージを展開する

deploysolution 操作を使用すると、コマンド プロンプトからソリューションを展開できます。

単一のサイト コレクションにソリューション パッケージを展開する

  1. インポートされたソリューション パッケージを展開するファーム内のサーバーの、SharePoint 製品とテクノロジがインストールされているドライブ上で、コマンド プロンプトに次のコマンドを入力して Stsadm コマンドライン ツールが格納されているディレクトリに変更します。

    cd %COMMONPROGRAMFILES%\Microsoft shared\Web server extensions\12\bin

  2. 次のコマンドを入力します。

    stsadm –o deploysolution –name < ソリューション名 > –url < URL 名 >

    ここで、ソリューション名はソリューションの名前、URL 名は、インポートされたソリューションを展開する Web アプリケーションの URL になります。

1 つのサイト コレクションだけを対象とするのではなく、必要に応じて次の手順を使用し、allcontenturls パラメータによってサーバー ファーム内にあるすべてのサイト コレクションにソリューションを展開することもできます。

すべてのサイト コレクションにソリューション パッケージを展開する

  1. インポートされたソリューション パッケージを展開するファーム内のサーバーの、SharePoint 製品とテクノロジがインストールされているドライブ上で、コマンド プロンプトに次のコマンドを入力して Stsadm コマンドライン ツールが格納されているディレクトリに変更します。

    cd %COMMONPROGRAMFILES%\Microsoft shared\Web server extensions\12\bin

  2. 次のコマンドを入力します。

    stsadm –o deploysolution –name < ソリューション名 > –allcontenturls [-time] < 展開する時刻 > [- allowgacdeployment] [-allowcaspolicies]

    ここで、ソリューション名はソリューションの名前になります。

既定ではソリューションはすぐに展開されますが、time パラメータを使用して展開をスケジュールすることもできます。

allowgacdeploymentallowcaspolicies は重要なパラメータです。allowgacdeployment パラメータでは、Office SharePoint Server 2007 のグローバル アセンブリ キャッシュにアセンブリを展開できます。allowcaspolicies パラメータでは、カスタム コード アクセス セキュリティ (CAS) ポリシー ファイルの作成と、対象となるサイト コレクションの Web.config ファイル内でのアクティブ化を実行できます。

詳細については、「Deploysolution : Stsadm 操作 (Office SharePoint Server)」を参照してください。

フィーチャーを使用して開発サイト要素を展開する

このセクションの内容 :

  • フィーチャーとは

  • フィーチャーを使用する状況

  • フィーチャー パッケージを作成する

  • フィーチャーを手動で展開する

  • Stsadm を使用してフィーチャーをインストールおよびアクティブ化する

フィーチャーの詳細については、「フィーチャーを操作する」(https://go.microsoft.com/fwlink/?linkid=105337&clcid=0x411) を参照してください。

フィーチャーとは

フィーチャーとは、Office SharePoint Server 2007 および Windows SharePoint Services 3.0 のさまざまな定義済み拡張のコンテナのことで、Web サーバーに展開される XML ファイルのセットで構成されています。フィーチャーは、サイト定義またはソリューション パッケージの一部として展開でき、Office SharePoint Server サイトで個々にアクティブ化できます。

フィーチャーを使用すると、単純なサイトのカスタマイズ作業の際の複雑さが軽減され、展開へのアップグレードの適用が安全に行えます。ちょっとした機能変更に大規模なコード群をコピーする必要がなくなるため、フロントエンド Web サーバー間で発生するバージョン管理や一貫性の問題が少なくなります。

フィーチャーを使用すると、展開した個々の機能の有効/無効を切り替えるのも容易で、管理者はユーザー インターフェイスで特定のフィーチャーをオン/オフすることにより、テンプレートやサイト定義を切り替えることができます。

フィーチャーには、次のような機能があります。

  • カスタム コードの実行範囲を指定できるスコープ機能

  • フィーチャーを展開する際、展開先のファームにインストールするかどうかを指定する機能

  • コードをインストールまたはアンインストールせずに、指定した範囲でフィーチャーのアクティブ化/非アクティブ化を切り替える機能

  • 範囲指定されたプロパティ フォルダの範囲内にフィーチャーが必要とするデータを格納する機能

  • Windows SharePoint Services 3.0 および Office SharePoint Server 2007 ソリューションの分散展開に適用できる統合フレームワークの基盤

Microsoft Office SharePoint Portal Server 2003 で大きなサイト定義ファイルに記述していた項目は、Windows SharePoint Services 3.0 フィーチャー内では個別の要素になります。要素はフィーチャー内の最小単位です。 Feature 要素は、Feature.xml ファイル内で使用され、フィーチャーを定義する働きと、フィーチャーをサポートするアセンブリ、ファイル、依存関係、プロパティの場所を指定する働きがあります。フィーチャーには 1 つの Feature.xml ファイルと、個々の要素を記述した任意の数のファイルが含まれます。その他、Onet.xml ファイルでは異なるスキーマに基づく Feature 要素が使用され、サイト定義内でフィーチャーの有効化を指定します。

通常、Feature.xml ファイルは、フィーチャーの実行に必要な要素を定義する <Elements> タグを最上位に含む XML ファイルを 1 つ以上参照します。Windows SharePoint Services 3.0 の要素の多くは、旧バージョンの Onet.xml ファイルや Schema.xml ファイルで独立したノードになっていたものに対応します。要素には、カスタム メニュー項目、イベント ハンドラなど、いくつかの型があります。

フィーチャーでは、たとえば次のような要素を含む "よく使う項目" の機能を実現できます。

  • ユーザーごとによく使う項目を列挙した「カスタム リスト」。フィーチャーが有効になっていれば、ワークスペースごとに隠しリストとして作成されます。

  • 「よく使う項目として追加」メニュー。該当する項目を追加する機能で、リストすべてに添えられるようになります。

  • よく使う上位 10 項目を追跡、表示する Web パーツ。

フィーチャーの各要素自体は、それほど役立つものではありませんが、サイト上で利用するとこれらすべての要素が合わさって完全なソリューションとなります。

詳細については、Windows SharePoint Services 3.0 SDK の次のリソースを参照してください。

フィーチャーを使用する状況

次のうち 1 つ以上の要因があてはまる場合、フィーチャーを使用して開発サイト要素を展開できます。

  • アクティブ化および非アクティブ化の必要性 フィーチャーにサイト要素のカスタマイズ内容を展開する場合、Stsadm コマンドライン ツールの操作を使用するかオブジェクト モデルを使用して、フィーチャーのインストール、アクティブ化、および非アクティブ化を実行できます。ユーザー インターフェイスからフィーチャーをアクティブ化および非アクティブ化することもできます。

  • 範囲の柔軟性 ファーム、Web アプリケーション、サイト コレクション、Web サイトなど、1 つの範囲でフィーチャーをアクティブ化できます。

  • 分散した展開の複雑さの軽減 フィーチャーにより、複数のサーバー ファームの展開が容易になります。

  • フィーチャーのオブジェクト モデルによる詳細な制御 フィーチャーのオブジェクト モデルにより、指定された範囲内にインストールされているフィーチャーのリストを指定したり、フィーチャーをファーム レベルおよびサイト レベルで有効にするかどうかを制御したりできます。

カスタマイズ シナリオ」の展開図に示すように、フィーチャーを使用すると、開発者のワークステーションと統合ファームの間で、および、統合ファームと作成クライアント ワークステーションやパイロット ファームまたは生産ファームの間で、開発サイト要素のカスタマイズ内容を展開できます。

フィーチャー パッケージを作成する

Office SharePoint Server 2007 でカスタム Web ページを作成する場合、ASPX ページは Office SharePoint Server 2007 を実行するサーバーのルート サイト コレクションにのみ含めることができます。ルートにないサイト コレクションにページを作成する場合、カスタム Web ページを SharePoint フィーチャーとして展開する必要があります。SharePoint フィーチャーは、単純な XML ファイルを 2 つ必要とし、Stsadm コマンドライン ツールを使用して展開されます。このプロセスはバッチ ファイルを使用して自動化できます。

注意

Stsadm コマンドライン ツールを実行するには、Stsadm が格納されているディレクトリに変更する必要があります。これを行うには、SharePoint 製品とテクノロジがインストールされているドライブで、cd %COMMONPROGRAMFILES%\Microsoft shared\Web server extensions\12\Bin というコマンドを実行します。

カスタム フィーチャーを作成する

  1. Feature.xml ファイルを作成します。次に示すのは Feature.xml ファイルのサンプルです。このファイルは、フィーチャーに一意の ID を設定し、Module.xml ファイルを示すために必要です。

    <?xml version="1.0"?>
    <Feature Id="8C4DD0CB-5A94-44da-9B7F-E9ED49C2B2DC" Title=
    "Custom Web page"
    Description="This simple example feature adds an ASPX page 
    with a hosted XmlFormView control" 
    Version="1.0.0.0" Scope="Web"
    xmlns="https://schemas.microsoft.com/sharepoint/">
    <ElementManifests>
        <ElementManifest Location="Module.xml"/>
    </ElementManifests>
    </Feature>
    
  2. Module.xml ファイルを作成します。次に示すのは Module.xml ファイルのサンプルです。Module.xml ファイルには、ソリューションの一部であるページに関する情報が格納されています。

    <?xml version="1.0"?>
    <Elements xmlns="https://schemas.microsoft.com/sharepoint/">
        <module name="file" url="" path="">
            <file url="XmlFormViewPage.aspx" type="ghostable"> </file>
        </module>
    </Elements>
    
  3. ファイルの url の値を ASPX ページの名前に変更し、「Stsadm コマンドライン ツールを使用してフィーチャーをインストールおよびアクティブ化する」で説明されているようにコマンドライン操作を実行します。バッチ ファイルを作成して、これらのコマンドライン操作を連続して実行できます。

  4. 次の操作を実行します。

    1. サーバー コンピュータ上の Features フォルダの下にフォルダを作成します。Features フォルダは、通常、%COMMONPROGRAMFILES%\Microsoft shared\Web server extensions\12\TEMPLATE\FEATURES にあります。

    2. このフォルダにカスタム ASPX ページを追加します。

    3. 前のセクションで示した例を基にして Feature.xml ファイルと Module.xml ファイルを作成し、同じ場所に追加します。

展開後にフィーチャーをインストールおよびアクティブ化するには、この記事の後半の「Stsadm コマンドライン ツールを使用してフィーチャーをインストールおよびアクティブ化する」を参照してください。

フィーチャーを手動で展開する

フィーチャーを実装するためには、フィーチャー定義を格納するサブフォルダを、フィーチャーのセットアップ ディレクトリ (この例では、Local_Drive:\%COMMONPROGRAMFILES%\Microsoft shared\Web server extensions\12\TEMPLATE\FEATURES) 以下に作成する必要があります。Feature サブフォルダには、フィーチャーおよび関連するリスト要素 (要素マニフェストを含む XML ファイル、他の関連ファイルなど) の基本的なプロパティを定義する、Feature.xml ファイルを含めます。ここには Feature.xml ファイルだけを置くようにしても、関連する要素ファイル (XML ファイルのほか, .aspx, .htm, .xsn, .resx, .dll など) を併せて保存するようにしてもかまいません。

注意

Windows エクスプローラ上で、Features ディレクトリを右クリックし、[新規作成] サブメニューの [フォルダ] コマンドで新しいフォルダを作成した場合、権限の設定が引き継がれません。フィーチャーをそのフォルダに展開すると、サイト設定、リスト ビューなど、Windows SharePoint Services 3.0 ページにアクセスできなくなります。なお、コマンド プロンプト上で、md コマンドを使用してフォルダを作成すると、この問題を回避できます。

フィーチャー フォルダの作成後、Stsadm コマンド ライン操作またはオブジェクト モデルを使用して、フィーチャーをインストールしてアクティブ化できます。フィーチャーは、[サイトコレクションの機能] ページや、フィーチャーをアクティブ化するサイト コレクションまたはサイトの [サイトの機能] ページでもアクティブ化できます。フィーチャーをインストールすると、その定義や要素をサーバー ファーム全体に知らせることができ、フィーチャーをアクティブ化することによって、フィーチャーを特定の範囲で使用できるようになります。

Stsadm コマンドライン ツールを使用してフィーチャーをインストールおよびアクティブ化する

フィーチャーは、12\Template\Features ディレクトリの下の各フィーチャー専用のサブディレクトリにインストールします。このフォルダのルートでは、Feature.xml ファイルでフィーチャーの内容を定義します。

注意

Stsadm コマンドライン ツールを実行するには、ツールが格納されているディレクトリに変更する必要があります。これを行うには、cd %COMMONPROGRAMFILES%\Microsoft shared\Web server extensions\12\Bin というコマンドを入力します。

個別のフィーチャーを使用するには、先にインストールする必要があります。そのためには、コマンド プロンプトで次のコマンドを実行します。

stsadm -o installfeature-filename < 相対パス > -name < フィーチャー フォルダ > [-force]

詳細については、「Installfeature : Stsadm 操作 (Office SharePoint Server)」を参照してください。

フィーチャーを使用するには、フィーチャーをインストールするだけでなく、先にフィーチャーをアクティブ化する必要があります。ただし、フィーチャーの対象範囲がファームの場合は、フィーチャーが自動的にアクティブ化されるので、この限りではありません。

フィーチャーをアクティブ化するには、次のコマンドを実行します。

stsadm -o activatefeature -filename <相対パス> -name <フィーチャー フォルダ> -id <フィーチャー ID> [-url] <URL 名> [-force]

詳細については、「Activatefeature : Stsadm 操作 (Office SharePoint Server)」を参照してください。

フィーチャーをアンインストールし、サーバー ファーム内でその定義を使用できないようにするには、uninstall 操作を使用します。詳細については、「Uninstallfeature : Stsadm 操作 (Office SharePoint Server)」を参照してください。

注意

フィーチャーの範囲が Web アプリケーションやファームでない場合、フィーチャーをアンインストールする前に非アクティブ化する必要があります。

フィーチャーをアンインストールした後は、インターネット インフォメーション サービス (IIS) をリセットして、変更を有効にしてください。

フィーチャーをアンインストールせずにもともと割り当てられていた対象範囲で非アクティブにするには、deactivate 操作を使用します。詳細については、「Deactivatefeature : Stsadm の操作 (Office SharePoint Server)」を参照してください。

このブックをダウンロードする

このトピックは、簡単に読んだり印刷したりできるように、次のダウンロード可能なブックに収められています。

入手可能なドキュメントの詳細な一覧については、「Office SharePoint Server 2007 のダウンロード可能なブック」を参照してください。

関連項目

概念

カスタマイズを展開する
作成サイト要素のカスタマイズ内容を展開する
ソリューション パッケージのコンポーネント