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つコンポーネントあるんッスかね。 役割分担が良くわからず ^^;