C#で作って、さぁ他人のマシンで動かすぞー! …って時に色々ワナにハマって終電帰りの刑を食らったのでメモ書きを残しておく。 クソァ!!
なお、この記事の前提は
- Visual Studio 2008を利用
- Office 2003 向け AddIn を開発
- 開発言語は C#
* レジストリの登録が必要だぞ!
Officeプロジェクト作った際に、合せてインストーラープロジェクトも作成されるので、ソレ使ってしまうのが間違いなくレジストリを書き込んでくれます。 …けれども、他のインストーラーを使わないといけないケースもあるわけで。
っていうか何? Inno setup いいよね…(ぉ
(書きかけ)
* ランタイムが必要だぞ!
Office インストール時に「.NET Framework 2.0 プログラミングサポート」とかいう項目ある故に、このコンポーネントインストールしてある環境でレジストリに登録してあげりゃ動くだろう…と思ったら、そうはいかず。 別途 VSTOランタイム なるものが必要です。うそーん!
** VSTO 2005 向け?
-[http://www.microsoft.com/downloads/details.aspx?familyid=4468D8CB-B43E-4B09-82F6-8BA3F7B5E935&displaylang=ja:title=Microsoft Visual Studio 2005 Tools for Office Second Edition Runtime (build 8.0.50727.891) (x86)] // Office 2003 と 2007 に対応するっぽい?
** VSTO 2008 向け?
Office 2007 対応ぐらいしか書いていないので、VSTO2008で作った Office 2003 アドインとかは、VS2005向けのヤツを入れないと動かないかも。(…ってか、入れたら動いた:ぉ)
-[http://www.microsoft.com/downloads/en/details.aspx?familyid=D8EB4921-891A-4B5E-973F-0B96E6CCF376&displaylang=en:title=Microsoft Visual Studio Tools for the Microsoft Office System (version 3.0 Runtime) Service Pack 1 (x86) ]
-[http://www.microsoft.com/downloads/details.aspx?FamilyID=eb37615a-409f-4209-be8e-a197afdc1d45&displayLang=ja:title=ダウンロードの詳細 : Microsoft Visual Studio Tools for the Microsoft Office System (Version 3.0 Runtime) SP1 日本語 Language Pack]
-[http://www.microsoft.com/downloads/details.aspx?FamilyID=d8eb4921-891a-4b5e-973f-0b96e6ccf376&displayLang=ja:title=Microsoft Visual Studio Tools for the Microsoft Office System (Version 3.0 Runtime) 日本語 Service Pack 1 (x86)] ← これは開発マシンに入れるもの…? 1個上との違いがよくわからん…(苦笑
** VSTO 2010 向け?
おいらは VS2008使いなので、コレは探してリンク張っただけです :-P
しかし、Office 2010 は x86 と x64 があるのがチト面倒臭そうだよね。 該当開発者さんは頑張るんじゃよ☆(他人事
-[http://www.microsoft.com/downloads/details.aspx?familyid=F4D7A5A1-8CA8-489D-97EB-663A54D609A0&displaylang=ja:title=ダウンロードの詳細 : Microsoft Visual Studio 2010 Tools for Office Runtime (VSTOR 2010) 再頒布可能パッケージ]
-[http://www.microsoft.com/downloads/details.aspx?familyid=9DAF1AB1-F4AB-4663-A069-228504F0FC0A&displaylang=ja:title=ダウンロードの詳細 : Microsoft Visual Studio Tools for the Microsoft Office System (Version 4.0 Runtime) 日本語 Language Pack]
* セキュリティの設定しないと動かないよ!
開発したアセンブリをコピーして、レジストリも弄くって、さぁこれで動くだろぉぉぉおおお!! と思ったら動きませんでしたというオチ。 おいらの場合は、インストールしたは良いもののアドオンが認識するも読み込みに失敗するとう現象に遭遇…ギギギ
結論としては caspol.exe とやらでアセンブリのセキュリティを設定しきゃなりません。
詳しいことはこちら → [http://blogs.wankuma.com/yaju/archive/2009/06/29/176723.aspx:title=caspol.exeを使用したセキュリティポリシーの設定]
おいらは上記のページを参考にさせていただきつつバッチファイル書きました。
>|
@rem バッチファイルの引数として1つインストール先のパスを渡す
set caspol_path="C:\Windows\Microsoft.NET\Framework\v2.0.50727\CasPol.exe"
echo y|%caspol_path% -user -addgroup All_Code -allcode Nothing -n RozenAddIn
echo y|%caspol_path% -user -addgroup RozenAddIn -url "%1\*" FullTrust -n "KanariaAddIn"
|<
"echo y" の後のパイプの前後にスペース入れちゃイケナイとかどういう仕様なの…
* そのほか細かいこと
- "VSTO_SUPPRESSDISPLAYALERTS" 環境変数を作って値を0にすると、Office起動時 && AddInロード失敗時に細かい情報が詰まったエラーダイアログが出てくるようになります。 「COM アドインの読み込み中にランタイム エラーが発生しました」だけじゃわからねぇよ!
- "VSTO_LOGALERTS" 環境変数を作って値を1にするとログが生成されるらしいです。…が、おいらはココまで試してません(ぉ
参考 → [http://msdn.microsoft.com/ja-jp/library/ms269003.aspx:title=アプリケーション レベルのプロジェクトのデバッグ]
- 一旦読み込みに失敗したアドインは、次回起動時に自動では読んでくれません! テンパってる時とかは意外とハマります。(ぉ
次の手順で COMアドオンの管理ダイアログを出現させつつ、手動リロードさせましょう。
+ Office 2003 の場合
++ メニューとかツールバーあたりを右クリックして、「ユーザー設定」→「コマンド」
++ 左側の "分離"ペインから「ツール」→ "コマンド" ペインから「COM アドイン」を探す、
++ 「COM アドイン」の項目を何処か適当なところに配置する。おいらは「ツール」→「アドイン」メニューの下に配置しました。
++ カスタマイズ終了
++ 「COM アドイン」メニューを選択して、読み込む COM アドイン を管理する。
+ Office 2007 の場合 (Office 2010 も大体同じだったハズ)
++ 「Officeのメニュー(左上のOfficeアイコンの丸)」→「Wordのオプション」 // Excel のオプションとかでも良いよ。
++ 「アドイン」→ 右側のペインの下で「管理」を「COM アドイン」にしてから「設定」
++ 読み込むアドインを管理する
{{category Office}}{{category devel}}
{{lastmodified}}