Office 2003 の PIA(?) がインストール済みかどうか確認するにはどうすりゃいいかしらね

Excel/Word/PPT のアドインを VS2008 で作ってインストーラ付きで配布しようとしてるんですが、環境によっては Office 2003 (2007/2010も?) を導入していても PIA 入れてない環境があったりするんですよね。 Office 2003 をインストールした後に .NET Framework しましたよー とかいう環境だと特に。

アドインインストール時に「『.NET プログラミングサポート』コンポーネントがインストールされていません。Officeのインストーラーを起動してコンポーネントをインストールしてください」(意訳:勘弁してよぉぉおお!!ヽ(`Д´)ノ )とかメッセージ出して注意を促したいところなのですが…


さて、どうチェックすりゃいいのかなぁ…と。 ちなみにおいらが利用しているインストーラーは Inno setup でつ。


一応以下の2つの案は出てるんですが…

  • a) .NET から Excel/Word/PPT を起動だけする DLL or EXE を作成。インストール時にロード。失敗したら入って居ない。
  • b) gacutil.exe で Office のPIAが(?) GACにインストール済みかどうか確認する
  • c) GACディレクトリ下をごにょごにょ漁る

(ちなみにまだ何も実験してないです)

a) 案について

EXE → PIA未インストールの時は .NETの新設設計により「アセンブリ入ってないよ!」っていうメッセージボックスが出てきそう → 入っているかのチェックがしたいので、MessageBoxによるユーザーへの通知は不要 → 採用でき無さそう

DLL → Inno Setup から DLL だけ解凍して読んでとかいうコード書くのがめんどい(ぉ / caspol.exe でセキュリィの設定が云々とか必要になりそう?でめんどい


っていうか PIAインストール済みでも 「Visual Studio Tool for Office Runtime」をインストールしておかないと、動かないよね多分…(Runtimeはインストール時にインストール)

b) 案について

>gacutil /nologo /l Microsoft.Office.Interop.PowerPoint
グローバル アセンブリ キャッシュには次のアセンブリが含まれています:
  Microsoft.Office.Interop.PowerPoint, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c
  Microsoft.Office.Interop.PowerPoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c

項目の数 = 2

とかいう標準出力結果を頑張ってパースするんっすかー。えー(ぉ

あと gacutil.exe って CUI アプリだから inno setup から叩いた時に一瞬 DOS窓(古)が出そうだよなぁー… とか、そもそも標準出力どうやって取得してどう料理しようとか。

ぐぬぬ


c) 案について

これやって大丈夫なの? すげぇ裏技感なんだけども ^^;




何でチェックするのが妥当(どの環境でも安定してチェックできる)かしら…






っていうか、今更だけど「PIA」と「Visual Studio Tool for Office Runtime」って、なんで2つコンポーネントあるんッスかね。 役割分担が良くわからず ^^;