Office2003の配布・実行のための設定

Office2003のVSTOを配布・実行するために、
いくつか設定をしたため、メモ。


■配布する上で必要な設定

  1. 開発:Visual Studio 2008 Pro 上にて、アセンブリの署名
  2. 開発:発行
  3. クライアント:必要なツールをインストール
  4. クライアント:ランタイムセキュリティポリシーへの追加


■実際の手順
1.開発:Visual Studio 2008 Pro 上にて、アセンブリの署名

 「Properties」->「署名」 より、「■アセンブリの署名」にチェックを入れる。
 ファイル名・パスワードは任意。
 →ソリューションに、「xxx.pfx」ファイルが追加されているのを確認。


2.発行
 アセンブリの署名をしたソリューションをVSTO開発したExcelファイルの保存先へと発行。


3.クライアント:必要なツールをインストール
 以前の記事より、必要なツールをクライアント端末へとインストール。

  1. Office2003 Professional (単体Excelなどでも可)
  2. .NET Framework2.0 以降
  3. Office 2003 製品用のプライマリ相互運用機能アセンブリ
  4. Office2003用Visual Studio 2005 Tools for Office Second Edition Runtime
  5. Microsoft .NET Framework2.0 構成ツール(以下、Mscorcfg.msc) *任意


4.ランライムセキュリティポリシーへの追加
コンピューターレベルポリシーの「All_Code」の下に、以下の2つを追加。

  • 厳密な名前のコードグループ
  • VSTO開発したExcelファイルの保存先
  • 始める前に

 追加作業は管理者のコマンドプロンプトで実行。
 また、今回は .NET Framework2.0のCaspol.exeで実行するため、
 以下のコマンドでカレントディレクトリを変更。

cd %SystemRoot%\Microsoft.NET\Framework\v2.0.50727

  • 厳密な名前のコードグループ の設定

 「Mscorcfg.msc」でも実行可能だが、今回はコマンドプロンプトで実行。

caspol -machine -addgroup All_Code -strong -file -noname -noversion FullTrust -name "<コードグループ名>"


 各項目の説明は以下の通り。*1

項目 ここで指定した引数 説明
-machine (なし) 「コンピューターレベルポリシー」に設定*2
-addgroup All_Code 既存のコードグループのうち、All_Codeを親の配下に作成
-strong -file VSTO開発した厳密な名前付dllファイルへのフルパスを指定*3
-noname -noversion (なし) 今回は名前を特定しないため、左のオプションを指定
FullTrust (なし) アクセス許可セットとして、「FullTrust」を指定
-name "<コードグループ名>" 追加するコードグループ名を「"」で囲んで指定


 コマンドを正しく実行すると、以下が表示されるので、「y」を入力。

この操作を実行するとセキュリティ ポリシーが変更されます。
この操作を続行しますか? (yes/no)

 正常に完了すれば、以下が表示。

"-strong" メンバシップ条件で Machine レベルに追加された合併コード グループです。
正常に完了

  • VSTO開発したExcelファイルの保存先 の設定

 こちらも管理者コマンドプロンプトより実行。

caspol -machine -addgroup All_Code -url FullTrust -name "<コードグループ名>"

 各項目の説明は以下の通り。

項目 ここで指定した引数 説明
-machine (なし) 「コンピューターレベルポリシー」に設定
-addgroup All_Code 既存のコードグループのうち、All_Codeを親の配下に作成
-url そのパス以下を信頼するため指定*4
FullTrust (なし) アクセス許可セットとして、「FullTrust」を指定
-name "<コードグループ名>" 追加するコードグループ名を「"」で囲んで指定

 コマンド入力後の確認などは、厳密名の時と同じ。


■備考
Mscorcfg.mscの操作で「厳密な名前」を選択すると、「公開キー」欄あり。
コマンドプロンプトから操作した場合、アセンブリから公開キーを取得して、
その公開キー欄に設定している模様。

コマンドプロンプトから公開キーを設定する場合は、以下のコマンドとなる

caspol -machine -addgroup All_Code -strong -hex <公開キー> -noname -noversion FullTrust -name "<コードグループ名>"

上記の公開キーを取得する場合は、Mscorcfg.mscから取得するのが早い。

  1. 新しくコードグループを作成
  2. 「メンバシップ条件」タブで「厳密な名前」を選択
  3. 「インポート」ボタンで、VSTOで作成したアセンブリ(.dll)を指定

これにより、自動的に公開キーがセットされる。



■参考資料
MSDNでは、以下のあたりを参照。
MSDN - Office ソリューションの実行に必要なセキュリティ条件 (2003 システム)

*1:詳細 → MSDN - コード アクセス セキュリティ ポリシー ツール (Caspol.exe)

*2:上記MSDNでは「管理者の場合は、-machine が既定値です。」の記載があるため、省略も可能

*3:今回はバージョンを指定していないため、どのアセンブリバージョンでも構わない

*4:フォルダ単位で許可する場合は、「*」のワイルドカードも使用可。例:「\\192.168.0.1\Excel\*」