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

Inno Setupによるファイル関連づけ

環境/言語:[VB.NET、Visual Studio 2010、Windows 7]
分類:[.NET]

こんにちは、

これからSetup DeploymentではなくInno Setupを使ってインストーラーを作ろうと考えています。そこでInno Setupを使った時の複数のファイルの関連付けに関して教えてください。

例えばC:\Program Files (x86)或はC:\Program Files内にあるアプリケーションがQuickSyrop.exeだとします。まず[Setup]でChangesAssociations=yesと記します。重複しないようにレジストリに保存されるファイルの内部名をつける、ということなので内部名を「QuickSyrop164」とします。よって.txtとの関連付けを設定したい場合は以下のようになると思います。

Root: HKCR; Subkey: ".txt"; ValueType: string; ValueName: ""; ValueData: "QuickSyrop164"; Flags: uninsdeletevalue
Root: HKCR; Subkey: "QuickSyrop164"; ValueType: string; ValueName: ""; ValueData: "My Program File"; Flags: uninsdeletekey
Root: HKCR; Subkey: "QuickSyrop164\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\QuickSyrop.exe,0"
Root: HKCR; Subkey: "QuickSyrop164\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\QuickSyrop.exe"" ""%1"""

さて分からないのは複数の拡張子を一度に関連付ける場合です。例えば.txtと.rtfをQuickSyrop.exeに関連付けしたいとすると、内部名を拡張子ごとに変えるのでしょうか。そうすると以下の書き方ではどうでしょうか?

Root: HKCR; Subkey: ".txt"; ValueType: string; ValueName: ""; ValueData: "QuickSyrop164"; Flags: uninsdeletevalue
Root: HKCR; Subkey: "QuickSyrop164"; ValueType: string; ValueName: ""; ValueData: "My Program File"; Flags: uninsdeletekey
Root: HKCR; Subkey: "QuickSyrop164\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\QuickSyrop.exe,0"
Root: HKCR; Subkey: "QuickSyrop164\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\QuickSyrop.exe"" ""%1"""

Root: HKCR; Subkey: ".rtf"; ValueType: string; ValueName: ""; ValueData: "QuickSyrop232"; Flags: uninsdeletevalue
Root: HKCR; Subkey: "QuickSyrop232"; ValueType: string; ValueName: ""; ValueData: "My Program File"; Flags: uninsdeletekey
Root: HKCR; Subkey: "QuickSyrop232\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\QuickSyrop.exe,0"
Root: HKCR; Subkey: "QuickSyrop232\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\QuickSyrop.exe"" ""%1"""

考え方が上記のようなもので良いでしょうか?どうぞよろしくお願いします。
> さて分からないのは複数の拡張子を一度に関連付ける場合です。例えば.txtと.rtfをQuickSyrop.exeに関連付けしたいとすると、内部名を拡張子ごとに変えるのでしょうか。

関連付けの引数が違う,といった場合は分離が必要ですし,
内容が同じであればわざわざ分離する必要はありません。

典型例で,自身のPCの.htmと.htmlの関連付けを調べてみるとよいでしょう。
# IEだと HKCR\.htm\(null)もHKCR\.html\(null)もhtmlfileになっているかと。
どうもありがとうございます。
解決済み!

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