チュートリアル : Windows インストーラ ファイルを使用したドキュメント レベルのカスタマイズの配置 (2003 システム)

更新 : 2007 年 11 月

対象

このトピックの情報は、指定された Visual Studio Tools for Office プロジェクトおよび Microsoft Office のバージョンにのみ適用されます。

プロジェクトの種類

  • ドキュメント レベルのプロジェクト

Microsoft Office のバージョン

  • Microsoft Office 2003

詳細については、「アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。

このチュートリアルでは、ドキュメント レベルのカスタマイズの配置に使用できる Microsoft Windows インストーラ (.msi) ファイルの作成方法について説明します。ドキュメント レベルのカスタマイズの詳細については、「ドキュメント レベルのカスタマイズのアーキテクチャ」を参照してください。

このチュートリアルでは、次のタスクについて説明します。

  • Windows インストーラ ファイルの作成に使用するセットアップ プロジェクトを作成します。

  • セットアップ プロジェクトを変更して、Windows インストーラ ファイルが Visual Studio Tools for Office ソリューションをインストールするようにします。

  • セットアップ プロジェクトに手順を追加して、Windows インストーラ ファイルが Visual Studio Tools for Office ソリューションのドキュメントに埋め込まれたアプリケーション マニフェストを編集するようにします。

このチュートリアルでは、対象のコンピュータに Visual Studio Tools for Office ソリューションを実行するための必要条件が既にインストールされていることを前提としています。作成する Windows インストーラ ファイルでは、これらの必要条件の確認またはインストールは行われません。必要条件のインストール方法の詳細については、「Deploying Visual Studio 2005 Tools for Office Second Edition Solutions Using Windows Installer」を参照してください。Visual Studio Tools for Office ソリューションを実行するための必要条件の詳細については、「方法 : Office ソリューションを実行できるようにエンド ユーザーのコンピュータを準備する (2003 システム)」を参照してください。

ms268758.alert_note(ja-jp,VS.90).gifメモ :

Visual Studio Tools for Office ソリューションを実行する前に、エンド ユーザーのセキュリティ ポリシーでこのソリューション内のアセンブリに完全な信頼が付与されている必要があります。このチュートリアルで作成する Windows インストーラ ファイルでは、ソリューションの実行に必要なセキュリティ ポリシーは配置されません。カスタマイズ動作を追加してカスタマイズ アセンブリに信頼を付与する方法の詳細については、「Deploying Visual Studio 2005 Tools for Office Second Edition Solutions Using Windows Installer」を参照してください。Visual Studio Tools for Office ソリューションのセキュリティの詳細については、「Office ソリューションの実行に必要なセキュリティ条件 (2003 システム)」および「Office ソリューションのセキュリティに関するベスト プラクティス (2003 システム)」を参照してください。エンド ユーザー コンピュータにおけるセキュリティ ポリシーの設定については、「セキュリティ ポリシーの配置」を参照してください。

前提条件

このチュートリアルを完了するには、次のコンポーネントが必要です。

  • Visual Studio Tools for Office (Visual Studio 2008 Professional および Visual Studio Team System のオプションの要素)

  • Microsoft Office Word 2003 または Microsoft Office Excel 2003

プロジェクトの作成

この手順では、Excel ブック プロジェクトを作成します。既存の Word ソリューションまたは Excel ソリューションを使用してチュートリアルを実行する場合は、「セットアップ プロジェクトの作成」という見出しからチュートリアルを開始してください。その場合、すべてのコード例および手順内の ExcelDeployment というプロジェクト名を、使用するプロジェクトの名前に置き換えてください。

新しいプロジェクトを作成するには

  • Office 2003 のプロジェクト テンプレートを使用して、ExcelDeployment という名前の Excel ブック プロジェクトを作成します。

    ウィザードで、[新規ドキュメントの作成] をクリックします。詳細については、「方法 : Visual Studio Tools for Office プロジェクトを作成する」を参照してください。

新しい Excel ブックがデザイナで開き、ExcelDeployment プロジェクトがソリューション エクスプローラに追加されます。

ブックの分離コードの追加

ドキュメントを開いたときにソリューションが実行されていることを確認するには、プロジェクトにコードを追加する必要があります。このチュートリアルでは、ブックの Startup イベント ハンドラにメッセージ ボックスを追加します。

初期化イベントにメッセージ ボックスを追加するには

  1. ソリューション エクスプローラThisWorkbook.vb または ThisWorkbook.cs を右クリックし、ショートカット メニューの [コードの表示] をクリックします。

  2. ThisWorkbook クラス内の Startup のイベント ハンドラに以下のコードを追加して、初期化処理中にメッセージ ボックスを表示するようにします。

    Private Sub ThisWorkbook_Startup(ByVal sender As Object, ByVal e As System.EventArgs) _
        Handles Me.Startup
    
        MessageBox.Show("The workbook is deployed successfully.")
    End Sub
    
    private void ThisWorkbook_Startup(object sender, System.EventArgs e)
    {
        MessageBox.Show("The workbook is deployed successfully.");
    }
    
  3. F5 キーを押してプロジェクトを実行します。

    Excel が起動し、メッセージ ボックスが表示されます。

  4. メッセージ ボックスを閉じます。

  5. Excel を終了します。

セットアップ プロジェクトの作成

セットアップ プロジェクトが提供するファイルとコードをコンパイルすることによって、ソリューションの Windows インストーラ ファイルを作成できます。詳細については、「セットアップ プロジェクト」を参照してください。

ソリューションのセットアップ プロジェクトを作成するには

  1. ソリューション エクスプローラでソリューション ノードを右クリックします。

  2. ショートカット メニューの [追加] をポイントし、[新しいプロジェクト] をクリックします。

    [新しいプロジェクトの追加] ダイアログ ボックスが表示されます。

  3. プロジェクトの種類ペインで、[その他のプロジェクトの種類] を展開し、[セットアップと配置] を選択します。

  4. テンプレート ペインの [セットアップ プロジェクト] をクリックします。

  5. プロジェクトに ExcelSetup という名前を付けます。

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

    ソリューション エクスプローラにセットアップ プロジェクトが表示されます。既定では、このセットアップ プロジェクトを使用して作成する Windows インストーラ ファイルには、エンド ユーザーがソリューションのインストール場所を指定できるダイアログ ボックスが含まれます。詳細については、「[インストール フォルダ] ユーザー インターフェイス ダイアログ ボックス」を参照してください。

ブックおよびソリューション アセンブリのセットアップ プロジェクトへの追加

ExcelDeployment プロジェクトのプライマリ出力は、ブックおよびソリューション アセンブリで構成されます。これらのコンポーネントをセットアップ プロジェクトに追加します。

ドキュメントおよびアセンブリをセットアップ プロジェクトに追加するには

  1. ソリューション エクスプローラで [ExcelSetup] プロジェクト ノードを右クリックします。

  2. ショートカット メニューの [表示] をポイントし、[ファイル システム] をクリックします。

  3. 左ペインの [アプリケーション フォルダ] を右クリックします。

  4. ショートカット メニューの [追加] をポイントし、[プロジェクト出力] をクリックします。

  5. [プロジェクト] ボックスの [ExcelDeployment] を選択します。

  6. 出力の種類の一覧の [プライマリ出力] を選択します。

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

    プロジェクト出力と依存関係が右ペインに表示されます。

  8. ソリューション エクスプローラで、[ExcelSetup] プロジェクト ノードの下にある [見つかった依存関係] を展開します。

  9. Microsoft .NET Framework を除くすべての依存関係を右クリックし、ショートカット メニューの [除外] をクリックします。

カスタム動作プロジェクトの作成

カスタム動作は、Windows インストーラ機能です。この機能を使用して、インストール プロセスの終了時にコードを実行し、インストール中には実行できないアクションを実行できます。詳細については、「カスタム動作」を参照してください。

カスタム動作プロジェクトを作成するには

  1. ソリューション エクスプローラでソリューション ノードを右クリックします。

  2. ショートカット メニューの [追加] をポイントし、[新しいプロジェクト] をクリックします。

    [新しいプロジェクトの追加] ダイアログ ボックスが表示されます。

  3. プロジェクトの種類ペインで、使用しているプログラミング言語のノードを展開し、[Windows] を選択します。

  4. テンプレート ペインで [クラス ライブラリ] をクリックします。

  5. プロジェクトに ExcelCustomAction という名前を付けます。

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

    ソリューション エクスプローラに新しいプロジェクトが表示されます。

  7. ソリューション エクスプローラで、[ExcelCustomAction] プロジェクトの下にある Class1.vb または Class1.cs を右クリックし、[削除] をクリックします。このファイルはこのチュートリアルでは使用しません。

アプリケーション マニフェストを編集するカスタム動作の作成

このチュートリアルの前半で F5 キーを押してプロジェクトを実行したときは、ブックに埋め込まれたアプリケーション マニフェストがビルド処理によって編集され、アセンブリの相対パスを指すようになっていました。ブックとアセンブリをインストール後も同じフォルダに保存する場合は、埋め込みのアプリケーション マニフェストを変更する必要がないため、このセクションは無視してください。しかし、ソリューションのインストール後にユーザーがブックを別のフォルダに移動できるようにする場合は、アプリケーション マニフェストを編集して、アセンブリの完全パスを指すようにする必要があります。

ソリューション アセンブリの保存場所は、ユーザーがインストール時に指定するまでわからないため、インストール プロセスの終了後にカスタム動作を実行して、Visual Studio Tools for Office ソリューションのドキュメントに埋め込まれたアプリケーション マニフェストを更新する必要があります。埋め込まれたアプリケーション マニフェストの編集は、ServerDocument クラスを使用して行います。セットアップ プロジェクトで ServerDocument クラスを使用するには、カスタム動作プロジェクト内の Installer クラスにコードを追加します。

アプリケーション マニフェストを編集するカスタム動作を作成するには

  1. ソリューション エクスプローラで [ExcelCustomAction] プロジェクトを右クリックします。

  2. ショートカット メニューの [追加] をポイントし、[新しい項目] をクリックします。

    [新しい項目の追加] ダイアログ ボックスが表示されます。

  3. [インストーラ クラス] をクリックし、クラスに ManifestEditor という名前を付けます。

  4. Microsoft.VisualStudio.Tools.Applications.Runtime アセンブリへの参照を ExcelCustomAction プロジェクトに追加します。

  5. ソリューション エクスプローラで、ManifestEditor.cs ファイルまたは ManifestEditor.vb ファイルをクリックし、[コードの表示] をクリックします。

  6. 次の Imports ステートメントまたは using ステートメントをコード ファイルの先頭に追加します。

    Imports Microsoft.VisualStudio.Tools.Applications.Runtime
    
    using Microsoft.VisualStudio.Tools.Applications.Runtime;
    
  7. ManifestEditor クラスに次のコードをコピーします。

    このコードは、カスタムのインストール動作を実行するために使用される Install メソッドをオーバーライドします。このコードは、ユーザーが指定したインストール場所を AssemblyPath プロパティに設定します。ユーザーが指定したインストール パス、およびドキュメントとアセンブリの名前は、Parameters プロパティから取得されます。

    Public Overrides Sub Install(ByVal stateSaver As System.Collections.IDictionary)
        UpdateApplicationManifest()
        MyBase.Install(stateSaver)
    End Sub
    
    Private Sub UpdateApplicationManifest()
    
        ' Get the parameters passed to the task.
        Dim targetDir As String = Me.Context.Parameters("targetdir")
        Dim documentName As String = Me.Context.Parameters("documentname")
        Dim assemblyName As String = Me.Context.Parameters("assemblyname")
    
        ' Get the application manifest from the document.
        Dim documentPath As String = System.IO.Path.Combine(targetDir, documentname)
        Dim serverDocument1 As ServerDocument = New ServerDocument(documentPath, _
                System.IO.FileAccess.ReadWrite)
    
        Try
            Dim appManifest1 As AppManifest = serverDocument1.AppManifest
            Dim assemblyPath As String = System.IO.Path.Combine(targetDir, assemblyName)
            appManifest1.Dependency.AssemblyPath = assemblyPath
            serverDocument1.Save()
    
        Finally
            If Not serverDocument1 Is Nothing Then
                serverDocument1.Close()
            End If
        End Try
    End Sub
    
    // Override the Install method to update the customization location
    // in the application manifest.
    public override void Install(System.Collections.IDictionary stateSaver)
    {
        UpdateApplicationManifest();
        base.Install(stateSaver);
    }
    
    // Update the application manifest according to the the install location.
    private void UpdateApplicationManifest()
    {
        // Get the parameters passed to the task.
        string targetDir = this.Context.Parameters["targetdir"];
        string documentName = this.Context.Parameters["documentname"];
        string assemblyName = this.Context.Parameters["assemblyname"];
    
        // Get the application manifest from the document.
        string documentPath = System.IO.Path.Combine(targetDir, documentName);
        ServerDocument serverDocument1 = new ServerDocument(documentPath,
            System.IO.FileAccess.ReadWrite);
    
        try
        {
            AppManifest appManifest1 = serverDocument1.AppManifest;
            string assemblyPath = System.IO.Path.Combine(targetDir, assemblyName);
            appManifest1.Dependency.AssemblyPath = assemblyPath;
            serverDocument1.Save();
        }
        finally
        {
            if (serverDocument1 != null)
            {
                serverDocument1.Close();
            }
        }
    }
    
  8. ソリューション エクスプローラで [ExcelCustomAction] プロジェクトを右クリックし、[ビルド] をクリックします。

カスタム動作のセットアップ プロジェクトへの追加

Windows インストーラ ファイルに、アプリケーション マニフェストを編集するカスタム動作を実行させることができます。このためには、ExcelCustomAction プロジェクトのプライマリ出力をセットアップ プロジェクトに追加します。

カスタム動作プロジェクトのプライマリ出力をセットアップ プロジェクトに追加するには

  1. ソリューション エクスプローラで [ExcelSetup] プロジェクト ノードを右クリックします。

  2. ショートカット メニューの [表示] をポイントし、[カスタム動作] をクリックします。

  3. カスタム動作エディタで、[インストール] ノードを右クリックし、[カスタム動作の追加] をクリックします。

  4. [検索対象] ボックスの [アプリケーション フォルダ] をクリックし、[出力の追加] をクリックします。

  5. [プロジェクト] ボックスの [ExcelCustomAction] を選択します。

  6. 出力の種類の一覧の [プライマリ出力] を選択し、[OK] をクリックします。

  7. セットアップ プロジェクトのプライマリ出力の一覧に [ExcelCustomAction (アクティブ) のプライマリ出力] が追加されていることを確認し、[OK] をクリックします。

  8. カスタム動作エディタ[インストール] を展開します。

  9. [ExcelCustomAction (アクティブ) のプライマリ出力] を右クリックし、[プロパティ ウィンドウ] をクリックします。

  10. [プロパティ] ウィンドウで、CustomActionData プロパティを次の文字列に設定します。

    /targetdir="[TARGETDIR]\" /documentname="ExcelDeployment.xls" /assemblyname="ExcelDeployment.dll"
    

    CustomActionData プロパティの詳細については、CustomActionData プロパティ のトピックを参照してください。

  11. ソリューション エクスプローラで [ExcelSetup] プロジェクトを右クリックし、[ビルド] をクリックします。

プロジェクトのテスト

次は、プロジェクトをテストして、開発用コンピュータで Windows インストーラ ファイルを実行したときにソリューションがインストールされることを確認します。

プロジェクトをテストするには

  1. ソリューション エクスプローラで [ExcelSetup] プロジェクトを右クリックし、[実行] をクリックします。

  2. セットアップ ウィザードの指示に従い、開発用コンピュータ上のインストール フォルダを指定します。

  3. インストール フォルダから Excel ブックを開きます。

  4. メッセージ ボックスが表示されることを確認します。

参照

処理手順

チュートリアル : 配置マニフェストを使用したドキュメント レベルのカスタマイズの配置 (2003 システム)

概念

Office ソリューションの配置 (2003 システム)

ドキュメント レベルのカスタマイズの配置 (2003 システム)

配置モデル (2003 システム)

カスタム動作

その他の技術情報

Windows インストーラでの配置の概念