セットアッププロジェクト(Windows Installer)の起動条件にWindows Media Playerのインストールの有無の確認を追加することは出来るのでしょうか?


自作のプログラムをフルインストールした直後のWindows Server 2008 R2から起動すると、以下のエラーが発生しました。

System.Runtime.InteropServices.COMException (0x80040154): CLSID {6BF52A52-394A-11D3-B153-00C04F79FAA6} を含むコンポーネントの COM クラス ファクトリを取得中に、次のエラーが発生しました: 80040154。

しかしながら、Windows Media Playerを導入後、自作のプログラムを動作させた場合同様のエラーは出ないことから、インストーラ(Windows Installer)より.NET Frameworkのように判定させれば良いのではないか?と考えたのですが、やり方がわかりません。

私の環境は、Visual Studio 2010 Professional (VisualBasic) + Windows 8 Professionalです。
よろしくお願いいたします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/08/06 22:14:25
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:psne No.2

回答回数605ベストアンサー獲得回数334

ポイント250pt

そういえば昔WMP依存のソフトを作ったなぁ、とプロジェクトを探したところ、
どうやらSystemFolder内をターゲットにしてwmp.dllの有無を確認していました。

セットアップ用プロジェクトの、ソースの一部

            "Name" = "8:条件1"
            "Condition" = "8:FILEEXISTS1"
            "Message" = "8:最新版のWindows Media Player をインストールしてください。"
            "InstallUrl" = "8:http://www.microsoft.com/japan/windows/products/winfamily/mediaplayer/default.mspx"

            {
            "Name" = "8:wmp.dll"
            "Folder" = "8:[SystemFolder]"
            "Depth" = "2:0"
            "FileName" = "8:wmp.dll"
            "MinVesion" = "8:"
            "MaxVersion" = "8:"
            "MinSize" = "8:"
            "MaxSize" = "8:"
            "MinDate" = "8:"
            "MaxDate" = "8:"
            "Languages" = "8:"
            "Property" = "8:FILEEXISTS1"
            }

※直接書くのではなくVS側で追加します。

これだけではWMPのバージョンが不明ですので、特定のバージョン以上でなければ駄目な時は
アプリ内でバージョン確認を行ってください。

id:halohalolin

ぽけっとしすてむさんありがとうございます。
参考にさせていただきます。

2013/08/02 23:12:45
id:halohalolin

ぽけっとしすてむさんありがとうございます。うまくいきました!
今回はバージョン指定は不要だと考えていたので、ぽけっとしすてむさんをベストアンサーにしました。
ありがとうございました。

2013/08/06 22:15:50

その他の回答1件)

id:cx20 No.1

回答回数607ベストアンサー獲得回数108

ポイント50pt

試していなくて恐縮ですが、以下のレジストリ起動条件を追加することで、インストール時のチェックが可能かと思われます。

■ 方法 : レジストリ起動条件を使用してターゲット ディレクトリを指定する
http://msdn.microsoft.com/ja-jp/library/vstudio/h0z89y5d(v=vs.100).aspx

他1件のコメントを見る
id:Mook

リンクをクリックではなく、「http://~.aspx」をURL の入力ボックスに貼り付ければ、表示されますよ。

2013/08/01 00:30:33
id:halohalolin

ありがとうございます、読めました!
参考にしてみます。

2013/08/01 19:52:43
id:psne No.2

回答回数605ベストアンサー獲得回数334ここでベストアンサー

ポイント250pt

そういえば昔WMP依存のソフトを作ったなぁ、とプロジェクトを探したところ、
どうやらSystemFolder内をターゲットにしてwmp.dllの有無を確認していました。

セットアップ用プロジェクトの、ソースの一部

            "Name" = "8:条件1"
            "Condition" = "8:FILEEXISTS1"
            "Message" = "8:最新版のWindows Media Player をインストールしてください。"
            "InstallUrl" = "8:http://www.microsoft.com/japan/windows/products/winfamily/mediaplayer/default.mspx"

            {
            "Name" = "8:wmp.dll"
            "Folder" = "8:[SystemFolder]"
            "Depth" = "2:0"
            "FileName" = "8:wmp.dll"
            "MinVesion" = "8:"
            "MaxVersion" = "8:"
            "MinSize" = "8:"
            "MaxSize" = "8:"
            "MinDate" = "8:"
            "MaxDate" = "8:"
            "Languages" = "8:"
            "Property" = "8:FILEEXISTS1"
            }

※直接書くのではなくVS側で追加します。

これだけではWMPのバージョンが不明ですので、特定のバージョン以上でなければ駄目な時は
アプリ内でバージョン確認を行ってください。

id:halohalolin

ぽけっとしすてむさんありがとうございます。
参考にさせていただきます。

2013/08/02 23:12:45
id:halohalolin

ぽけっとしすてむさんありがとうございます。うまくいきました!
今回はバージョン指定は不要だと考えていたので、ぽけっとしすてむさんをベストアンサーにしました。
ありがとうございました。

2013/08/06 22:15:50

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません