次の方法で共有


チュートリアル: ClickOnce によるインストール後にドキュメントをエンド ユーザーのコンピューターにコピーする

更新 : 2010 年 9 月

ClickOnce の配置後アクションを使用すると、ドキュメント レベルの Office ソリューションをインストールし、そのドキュメントをエンド ユーザーのコンピューターにコピーできます。 このためには、インストールの前に、アプリケーション マニフェストを変更し、アプリケーション マニフェストと配置マニフェストの両方に再署名する必要があります。

対象: このトピックの情報は、Microsoft Office 2010 および 2007 Microsoft Office system のドキュメント レベルのプロジェクトおよびアプリケーション レベルのプロジェクトに適用されます。 詳細については、「Office アプリケーションおよびプロジェクト タイプ別の使用可能な機能」を参照してください。

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

  • 配置する Office ソリューションを作成します。

  • ドキュメントをエンド ユーザーのデスクトップにコピーする配置後アクションを実装します。

  • 配置後アクションを実行するように、Office ソリューションのアプリケーション マニフェストを変更します。

  • アプリケーション マニフェストと配置マニフェストに再署名します。

注意

お使いのマシンで、Visual Studio ユーザー インターフェイスの一部の要素の名前や場所が、次の手順とは異なる場合があります。 これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。 詳細については、「Visual Studio の設定」を参照してください。

必要条件

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

-

Microsoft Office 開発者ツールを含むエディションの Visual Studio 2010。 詳細については、「[Office ソリューションを開発できるようにコンピューターを構成する](bb398242\(v=vs.100\).md)」を参照してください。
  • Excel 2007 または Excel 2010

  • テスト コンピューター。

新規プロジェクトの作成

まず、Excel ブック プロジェクトを作成します。

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

  • Excel ドキュメント レベルのプロジェクトの作成 プロジェクトに「ExcelWorkbook」という名前を付けて、%USERPROFILE%\Documents\Visual Studio 2010\Projects ディレクトリに保存します。 詳細については、「方法: Visual Studio で Office プロジェクトを作成する」を参照してください。

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

配置後アクションを定義するクラス ライブラリ プロジェクトの作成

配置後アクションを個別のクラス ライブラリに定義する必要があります。 この配置後アクションでは、エンド ユーザー コンピューターへのドキュメントのコピーが実行されます。

配置後アクションのクラス ライブラリを作成するには

  1. [ファイル] メニューの [追加] をポイントし、[新しいプロジェクト] をクリックします。

  2. [新しいプロジェクトの追加] ダイアログ ボックスの [インストールされたテンプレート] ペインで、[Windows] をクリックします。

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

  4. "名前" フィールドに「FileCopyPDA」と入力し、[OK] をクリックします。

  5. ソリューション エクスプローラーで、[FileCopyPDA] をクリックします。

  6. [プロジェクト] メニューの [参照の追加] をクリックします。

  7. [参照の追加] ダイアログ ボックスの [.NET] タブで、次の参照を追加します。

    • Excel プロジェクトが .NET Framework 3.5 を対象とする場合は、Microsoft.VisualStudio.Tools.Applications.Runtime.v10.0 および Microsoft.VisualStudio.Tools.Applications.ServerDocument.v10.0 への参照を追加します。

    • Excel プロジェクトが .NET Framework 4 を対象とする場合は、Microsoft.VisualStudio.Tools.Applications.Runtime および Microsoft.VisualStudio.Tools.Applications.ServerDocument への参照を追加します。

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

    Imports Microsoft.VisualStudio.Tools.Applications.Deployment
    Imports Microsoft.VisualStudio.Tools.Applications
    
    using Microsoft.VisualStudio.Tools.Applications.Deployment;
    using Microsoft.VisualStudio.Tools.Applications;
    using System.IO;
    
  9. クラスの名前を FileCopyPDA に変更し、次のコードを FileCopyPDA クラスに追加します。 このコードは、FileCopyPDA クラスを IAddInPostDeploymentAction から継承することを示しています。

    Public Class FileCopyPDA
        Implements IAddInPostDeploymentAction
    
    public class FileCopyPDA : IAddInPostDeploymentAction
    
  10. 次のコードを追加して、IAddInPostDeploymentAction.Execute メソッドを実装します。 このコードは次のタスクを実行します。

    • ソリューションをインストールまたは更新する場合は、Excel ブック ファイルをユーザーのデスクトップにコピーします。

    • _AssemblyLocation プロパティを相対パスから配置マニフェストの絶対パスに変更します。 これには、AddCustomization メソッドと RemoveCustomization メソッドを使用します。

    • ソリューションをアンインストールする場合は、ファイルを削除します。

      注意

      配置後のアクションは、.NET Framework 3.5 のアンインストール手順の中で実行されます。

    Sub Execute(ByVal args As AddInPostDeploymentActionArgs) Implements IAddInPostDeploymentAction.Execute
        Dim dataDirectory As String = "Data\ExcelWorkbook.xlsx"
        Dim file As String = "ExcelWorkbook.xlsx"
        Dim sourcePath As String = args.AddInPath
        Dim deploymentManifestUri As Uri = args.ManifestLocation
        Dim destPath As String = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)
        Dim sourceFile As String = System.IO.Path.Combine(sourcePath, dataDirectory)
        Dim destFile As String = System.IO.Path.Combine(destPath, file)
    
        Select Case args.InstallationStatus
            Case AddInInstallationStatus.InitialInstall, AddInInstallationStatus.Update
                System.IO.File.Copy(sourceFile, destFile)
                ServerDocument.RemoveCustomization(destFile)
                ServerDocument.AddCustomization(destFile, deploymentManifestUri)
                Exit Select
            Case AddInInstallationStatus.Uninstall
                If System.IO.File.Exists(destFile) Then
                    System.IO.File.Delete(destFile)
                End If
                Exit Select
        End Select
    End Sub
    
    public void Execute(AddInPostDeploymentActionArgs args) 
    {
        string dataDirectory = @"Data\ExcelWorkbook.xlsx";
        string file = @"ExcelWorkbook.xlsx";
        string sourcePath = args.AddInPath;
        Uri deploymentManifestUri = args.ManifestLocation;
        string destPath = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
        string sourceFile = System.IO.Path.Combine(sourcePath, dataDirectory);
        string destFile = System.IO.Path.Combine(destPath, file);
    
        switch (args.InstallationStatus)
        {
            case AddInInstallationStatus.InitialInstall:
            case AddInInstallationStatus.Update:
                File.Copy(sourceFile, destFile);
                ServerDocument.RemoveCustomization(destFile);
                ServerDocument.AddCustomization(destFile, deploymentManifestUri);
                break;
            case AddInInstallationStatus.Uninstall:
                if (File.Exists(destFile))
                {
                    File.Delete(destFile);
                }
                break;
        }
    }
    

ソリューションのビルドと発行

発行ウィザードまたはプロジェクト デザイナーのプロジェクト ページを使用して、Office ソリューションをビルドし、開発用コンピューターに発行します。

Excel プロジェクトを発行するには

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

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

  3. ソリューション エクスプローラー[ExcelWorkbook] プロジェクトを右クリックし、[参照の追加] をクリックします。

  4. [参照の追加] ダイアログ ボックスの [プロジェクト] タブをクリックします。

  5. [FileCopyPDA] をクリックし、[OK] をクリックします。

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

  7. [プロジェクト] メニューの [新しいフォルダー] をクリックします。

  8. Data」と入力し、Enter キーを押します。

  9. ソリューション エクスプローラーで、Data フォルダーをクリックします。

  10. [プロジェクト] メニューの [既存項目の追加] をクリックします。

  11. [既存項目の追加] ダイアログ ボックスで、ExcelWorkbook プロジェクトの出力ディレクトリを参照します。

  12. ExcelWorkbook.xlsx をクリックし、[追加] をクリックします。

  13. ソリューション エクスプローラーで、[ExcelWorkbook.xlsx] をクリックします。

    注意

    このファイルを後で変更する場合は、最新バージョンのファイルを追加して、ファイルを更新してください。

  14. プロパティ ウィンドウで、"ビルド アクション" プロパティを "コンテンツ" に変更し、"出力ディレクトリにコピー" プロパティを "新しい場合はコピーする" に変更します。

  15. ExcelWorkbook プロジェクトを c:\publish フォルダーに発行します。 詳細については、「方法: ClickOnce を使用して Office ソリューションを配置する」を参照してください。

アプリケーション マニフェストの変更

Visual Studio の XML エディターを使用して、ファイルをコピーする配置後アクションを実行するようにアプリケーション マニフェストを変更します。 アプリケーション マニフェストの内容は、製品に含まれる内容すべての一覧を記載した部品表に似ています。アプリケーション マニフェストには、すべての依存アセンブリと必要条件アセンブリが記載されています。 Office ソリューションのアプリケーション マニフェストには、アプリケーション レベルのアドインおよびドキュメント レベルのカスタマイズ用に Office アプリケーションから読み込む必要のあるアセンブリの一覧も記載されています。

アプリケーション マニフェストにインストール依存関係を追加するには

  1. Windows エクスプローラーを使用して c:\publish ディレクトリを開きます。

  2. Application Files フォルダーを開き、ExcelWorkbook_1_0_0_0 フォルダーを開きます。

  3. テキスト エディターで ExcelWorkbook.dll.manifest ファイルを開きます。

  4. </vstav3:update> 要素の後に、次のコードを追加します。 <vstav3:entryPoint> 要素の class 属性には、<名前空間名>.<クラス名> という構文を使用します。 この例では、名前空間名とクラス名は同じであるため、最終的にエントリ ポイント名は FileCopyPDA.FileCopyPDA になります。

    <vstav3:postActions>
      <vstav3:postAction>
        <vstav3:entryPoint
          class="FileCopyPDA.FileCopyPDA">
          <assemblyIdentity
            name="FileCopyPDA"
            version="1.0.0.0"
            language="neutral"
            processorArchitecture="msil" />
        </vstav3:entryPoint>
        <vstav3:postActionData>
        </vstav3:postActionData>
      </vstav3:postAction>
    </vstav3:postActions>
    

マニフェストへの再署名

次の手順では、アプリケーション マニフェストに署名し、配置マニフェストを更新します。 これにより、改ざんされたファイルがエンド ユーザーのコンピューターにインストールされないようにします。

アプリケーション マニフェストと配置マニフェストに再署名するには

  1. ExcelWorkbook_TemporaryKey.pfx 証明書ファイルを %USERPROFILE%\Documents\Visual Studio 2010\Projects\ExcelWorkbook\ExcelWorkbook ソリューション ディレクトリから c:\publish\Application Files\ExcelWorkbook_1_0_0_0 ディレクトリにコピーします。

  2. Visual Studio コマンド プロンプトを開きます。

  3. c:\publish\Application Files\ExcelWorkbook_1_0_0_0 ディレクトリに移動します。

  4. 次のコマンドを入力し、変更したアプリケーション マニフェストに署名します。

    mage -sign ExcelWorkbook.dll.manifest -certfile ExcelWorkbook_TemporaryKey.pfx
    

    "ExcelWorkbook.dll.manifest が正常に署名されました" というメッセージが表示されます。

  5. c:\publish ディレクトリに移動します。

  6. 次のコマンドを入力し、配置マニフェストを更新して署名します。

    mage -update ExcelWorkbook.vsto -appmanifest "Application Files\Ex
    celWorkbook_1_0_0_0\ExcelWorkbook.dll.manifest" -certfile "Application Files\ExcelWorkbook_1_0_0_0\ExcelWorkbook_TemporaryKey.pfx"
    

    "ExcelWorkbook.vsto 正常に署名されました" というメッセージが表示されます。

  7. ExcelWorkbook.vsto ファイルを c:\publish\Application Files\ExcelWorkbook_1_0_0_0 ディレクトリにコピーします。

配置後アクションのテスト

次の手順を実行して、更新したマニフェストにより Excel ブックがインストールされ、このブックがエンド ユーザーのデスクトップにコピーされることを確認します。

配置後アクションをテストするには

  1. c:\publish ディレクトリをテスト コンピューターにコピーします。

  2. Setup.exe プログラムを実行するか、必要条件が既にテスト コンピューターにインストールされている場合は、ExcelWorkbook.vsto 配置マニフェストをダブルクリックします。

    Microsoft Office カスタマイズ インストーラーが表示されます。

  3. [インストール] をクリックします。

    [Microsoft Office カスタマイズ インストーラー] ダイアログ ボックスに、"Microsoft Office のカスタマイズは正常にインストールされました" というメッセージが表示されます。 Excel ブックがエンド ユーザーのデスクトップにコピーされます。

  4. デスクトップから ExcelWorkbook.xlsx ファイルを開きます。

参照

処理手順

方法: アプリケーション マニフェストおよび配置マニフェストに再署名する

概念

Office ソリューションの配置

高度な Office ソリューションの配置

履歴の変更

日付

履歴

理由

2010 年 9 月

%USERPROFILE%\Documents\Visual Studio 10\Projects を %USERPROFILE%\Documents\Visual Studio 2010\Projects に変更しました。

コンテンツ バグ修正