相关文章推荐
分類:[.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"""

考え方が上記のようなもので良いでしょうか?どうぞよろしくお願いします。
 
推荐文章