DOBON.NET DOBON.NETプログラミング掲示板過去ログ

複数のアプリとファイル拡張子の関連付けについて

環境/言語:[VB2008]
分類:[.NET]

今回は複数のアプリケーションとファイル拡張子の関連付けについての質問です。

まず、アプリAとアプリBがあったとします。
(ちなみに、アプリAはデータを作成・保存ができるアプリケーション、アプリBは
データの閲覧専用のビューア的なものを想定しています。)
ユーザーは目的に応じてアプリA・アプリBをインストールします。
どちらか片方をインストールする人もいれば、両方インストールする人もいます。
これらアプリのインストール時に、データファイルの拡張子(仮に"*.abc"とします)を、
アプリA・アプリBに対して関連付けを行いたいのですが、アプリAとアプリBが両方とも
インストールされている場合は、ファイルのダブルクリックを行った時にはアプリAを
優先して起動するようにしたいのです。

セットアッププロジェクトでインストーラーを作成することを前提とするとして、
一つのアプリケーションに対してファイルの拡張子を関連付けさせるのであれば
セットアッププロジェクトの「ファイルの種類」で該当拡張子を設定すればいいのですが、
今回のような複数アプリに対する優先起動を行うには、セットアッププロジェクトで
カスタム動作エディタを使い、すでにインストールされているアプリを判断してコードで
ファイルの拡張子の関連付けをするという方法しかないのでしょうか?

例えば、
・アプリAインストール時、必ずアプリAと拡張子"*.abc"との関連付けを行う。
・アプリBインストール時、アプリAがすでにインストールされている場合はファイルの関連付け
 は行わない。
・アプリAアンインストール時、アプリBがインストールされている場合はアプリBと拡張子"*.abc"
 との関連付けを行う。
・アプリBアンインストール時、アプリAがインストールされていなければ拡張子"*.abc"との
 関連付けを削除する。

ということを思いつくのですが、こんな面倒くさいことをしなくとも実現は可能でしょうか?
※そもそも、一つの拡張子に対しては一つのアプリケーションしか割り当てられないものと
 思い込んでいるのですが、その認識が間違っているようでしたらご指摘ください。
 なお、一応、カスタム動作エディタとコードによるファイル拡張子の関連付けについては、
 以下のページで確認しました。

・カスタム動作エディタの使い方
 http://dobon.net/vb/dotnet/deployment/customaction.html

・プログラムをファイルの拡張子に関連付ける
 http://dobon.net/vb/dotnet/system/associatedapp.html

また、アプリBをClickOnceアプリケーションにすることも検討しているのですが、この場合も
同様のことが可能でしょうか?

纏めると、アプリAとアプリBがインストールされている場合、xxx.abcというファイルをダブルクリック
した時には、アプリAを優先して起動させたいのです。

どうぞアドバイスの程よろしくお願い申し上げます。
もっと良い方法があるのかもしれませんが、一つの方法としては、2つのアプリの状況に応じて適切なアプリを起動するアプリケーションを作成して、そのアプリケーションに拡張子を関連付けるというやり方が考えられます。
■No28711に返信(管理人さんの記事)
> もっと良い方法があるのかもしれませんが、一つの方法としては、2つのアプリの状況に応じて適切なアプリを起動するアプリケーションを作成して、そのアプリケーションに拡張子を関連付けるというやり方が考えられます。

管理人さん、ご回答有難うございます。
なるほど、それもひとつの方法ですね。

もう少し、ご意見を集めたいと思います。

DOBON.NET | プログラミング道 | プログラミング掲示板