次の方法で共有


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

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

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

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

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

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

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

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

注意

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

必要条件

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

-

Microsoft Office Developer Tools が含まれているエディションの Visual Studio 2012。詳細については、「[Office ソリューションを開発できるようにコンピューターを構成する](https://msdn.microsoft.com/ja-jp/library/bb398242\(v=vs.110\))」を参照してください。
  • Excel 2013 プレビュー版 または Excel 2010。

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

新規プロジェクトの作成

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

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

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

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

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

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

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

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

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

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

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

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

  6. [プロジェクト] で、メニューのをクリック [追加][参照]

    [参照の追加] ダイアログ ボックスが表示されます。

  7. [.NET] のタブで、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 メソッドを使用します。

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

    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. ファイル エクスプローラーを使用して 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 2012\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 ソリューションの配置