いろきゅう.jp 〜Programmable maiden〜 Tech side このページをアンテナに追加 RSSフィード

goto OTA side >>

2011-12-13

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

| 17:51

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

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


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


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

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


a) 案について

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

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

egtraegtra 2011/12/13 23:32 Word/Excel/PowerPointを起動するのではなく、Assembly.Load("Microsoft.Office.Interop.PowerPoint, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c")などが成功するかどうか確かめるEXEを作るというのはどうでしょうか?
ダメだと例外が投げられるようです。
http://msdn.microsoft.com/ja-jp/library/ky3942xh.aspx

ir9ir9 2011/12/14 20:22 おおお、そんな手法があったとは!
教えていただいた手法を利用して利用する方向にするベクトルで作業中です。どうもありがとうございます!

トラックバック - http://d.hatena.ne.jp/ir9Ex/20111213/1323766267