VSTO の新機能 : ClickOnce


【環境】
Microsoft Office 2007 Enterprise
Visual Studio Codename Orcas (March 2007 CTP)
Internet Information Server (IIS) 6.0

Orcas  でみる VSTO の新機能

  1. リボンのデザインサポート
  2. Word コンテントコントロールのデータバインド
  3. ClickOnce
  4. Outlook フォーム リージョン (ここから Beta 1 を使っています、、、)
  5. VBA との相互運用
  6. SharePoint ワークフローの作成と配置の自動化

こんにちは。 

今回は、Orcas における VSTO の新機能の中で、Orcas March 2007 CTP のダウンロードページにも記載されている ClickOnce について記載します。

ブログの中でもご紹介したように (こちら のブログを参照)、既存の VSTO v2 を使っても自動更新の仕組みを作成することが可能でした。しかし、利用者の環境で、利用するアプリケーションごとにコードアクセスセキュリティの設定が必要になるという障壁がありました。
Orcas では、この点を解決するために新しい VSTO のセキュリティモデルが使用されています。

ただし、実は結論から言うと、March CTP を試していただくとわかりますが、現在はそのベースの機能 (functionality) が組み込まれているだけで、まだいくつか手作業で設定しなければならない箇所があります。(無論、最終的な Orcas の正式版ではこうした点はクリアされます。) しかし、基本的な仕組みを理解する上では参考になると思いますので、以下、いくつかの手作業を含め、手順をご紹介します。

まず、いきなり手作業ですが、配置をおこなうプログラムが 拡張子 .vsto というファイルを http 経由で参照しますので、IIS の設定を変更してこのファイルをダウンロードできるようにしておく必要があります。

  1. 発行をおこなう IIS のインターネットインフォメーションサービス (IIS) マネージャを起動し、ローカルコンピュータを右クリックして、[プロパティ] を選択します。
  2. 表示される画面で [MIME の種類] のボタンをクリックして、

    拡張子: .vsto
    MIME の種類: application/octet-stream

    を追加しておいてください。

では、アドインのプロジェクト (今回は [Word Add-in] プロジェクトとします) を作成し、適当にアドインのアプリケーションを作成してみましょう。(こちら に記載しているように、リボンの追加などをおこなうとおもしろいかもしれません。)

アドインを作成したら、ソリューションエクスプローラのプロジェクトを右クリックし、[Publish] を選択して、IIS 上に作成したアドインアプリケーションを発行してください。
これで発行側の設定は終了です。

では、ClickOnce を使うクライアント側を設定していきましょう。

本来であれば、上記の発行と共にセットアップ用のプログラムが IIS 上に配置され、ブラウザからこのプログラムを実行することでインストールに必要なすべての処理が実行されますが、March 2007 CTP ではここがまだ作成されていません。
よって、ここからは、現状では完全な手動での確認になります。

まず、発行と利用を同一のマシンでおこなっている場合には、Microsoft Word 2007 を起動し、コントロールメニューの [Word オプション] をクリックして、表示されるオプション画面で [アドイン] を選択してください。作成したアドインがビルドの際にインストールされてしまっていますので、[設定] ボタンを押して、このアドインを削除しておきましょう。

冒頭で、新しいセキュリティモデルということを記載しましたが、Orcas では、Inclusion List と呼ばれる、いわば VSTO 版の「信頼されたアプリケーション」のリストが用意されていて、ここに登録されているアプリケーションが ClickOnce で実行できるようになっています。
よって、現状 (March CTP) では、この Inclusion List への組み込みの仕組みも手作業でおこなう必要があります。
以下の通り、VSTO 用にプログラムを作成して、強引に入れ込んでみましょう。

  1. Visual Studio を使って、コンソールアプリケーションのプロジェクトを作成してください。
  2. プロジェクトに Microsoft.VisualStudio.Tools.Applications.Runtime への参照を追加します。
  3. ソースコードに、以下の using ステートメントを追加してください。

    using Microsoft.VisualStudio.Tools.Applications.Runtime.Security;
  4. Main に以下のコードを記載します。(Uri などは各自適切な値を設定してください。)

    static void Main(string[] args)
    {
        Uri solutionLocation = new Uri("http://tsmatsuz21/WordAddIn9/WordAddIn9.vsto");
        SecurityEntry entry = new SecurityEntry(solutionLocation);
        UserInclusionList inclusionList = new UserInclusionList();
        inclusionList.Add(entry);
    }
  5. ビルドをして、実行します。

これで Inclusion List への登録が完了しました。
では、発行したアドインアプリケーションを利用するクライアントに配置してみましょう。で、これも申し訳ありませんが、やはり手動になります。
以下のコマンドを実行します。

"C:Program FilesCommon FilesMicrosoft SharedVSTO9.0VSTOInstaller.exe" http://tsmatsuz21/WordAddIn9/WordAddIn9.vsto

(このように、インストールの際は、「使う側」でVSTO のランタイムのコマンドが使用されているのがわかります。)

念のため、Word, Visual Studio などアドインが組み込まれた製品をすべて閉じてから、Word を開いてみてください。
アドインが実行されているのが確認できるでしょう。
試しに、コードを変更して再度発行すると、クライアント上で Word を再度起動した際に、アドインも変更されていることがおわかり頂けるでしょう。

なお、Inclusion List から削除する場合は、以下のコードを実行します。

static void Main(string[] args)
{
    Uri solutionLocation = new Uri("http://tsmatsuz21/WordAddIn10/WordAddIn10.vsto");
    SecurityEntry entry = new SecurityEntry(solutionLocation);
    UserInclusionList inclusionList = new UserInclusionList();
    inclusionList.Remove(entry);
}

上記の通り、March 2007 CTP では、未だ機能の全体が組み込まれていないため、ClickOnce ではなく二度手間、三度手間の状態ですが、仕組みの基盤は存在しているので、仕組み自体と、どんな感じの機能になるかといった点は理解して頂けたと思います。

ClickOnce によりアドインの配置も可能となり、かつコードアクセスセキュリティの設定も必要ありません。

現状では、まだアプリケーションレベル (Add-in) の ClickOnce のみが可能です。(Orcas の最終形としては未定です。)

なお、現在リリースされている VSTO SE までの VSTO プロジェクトの配置に関する最新情報については、以下が参考になります。

http://msdn2.microsoft.com/en-us/library/ms269007(VS.80).aspx

VSTO の新機能には、他にも、Outlook Form Region のデザイン時サポート、簡単になった SharePoint ワークフローの配置、などいろいろあります。これらについても順次記載していきます。(すみません、1週間ほど時間がとれないので、次回記載できるのはもう少々後になります。)

※ CTP (Community Technology Preview) 版は評価のためのプレビュー版であり、製品の正式なリリースではありません。現時点では、いくつかのバグを含んでいます。また、その機能は予告なく変更されることがありますのでご容赦ください。

 

関連ナンバー

 

Comments (2)

  1. こんにちは。 現在、つぎなる技術訴求に向けて猛烈に準備中ですが、先日、福井で INETA & Microsoft 協賛のセミナーがあり、上記タイトルのご質問を頂きました。 通常、セミナーなどで頂くご質問はご本人に回答するのですが、このご質問、大変影響も大きく、そしてコツの居る内容ですので、ブログにて記載させていただくことにします。

Skip to main content