如何在Inno-setup中更改文件关联

时间:2011-01-24 22:56:20

标签: inno-setup

我需要用户能够双击.pdb文件并使用myPgm.exe打开它。

将文件类型(myData.pdb)与可执行文件(myPgm.exe)相关联的语法是什么?

是注册表项吗?

3 个答案:

答案 0 :(得分:13)

Inno Setup网站上有an entry for that in the FAQ。以下是常见问题解答相关部分的引用:

创建文件关联

首先将[Setup]部分指令ChangesAssociations设置为yes。然后创建[Registry]条目,如下所示。

[Registry]
Root: HKCR; Subkey: ".myp"; ValueType: string; ValueName: ""; ValueData: "MyProgramFile"; Flags: uninsdeletevalue

".myp"是我们关联的扩展程序。 "MyProgramFile"是存储在注册表中的文件类型的内部名称。请确保为此使用唯一名称,这样您就不会无意中覆盖其他应用程序的注册表项。

Root: HKCR; Subkey: "MyProgramFile"; ValueType: string; ValueName: ""; ValueData: "My Program File"; Flags: uninsdeletekey
上面的

"My Program File"是资源管理器中显示的文件类型的名称。

Root: HKCR; Subkey: "MyProgramFile\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\MYPROG.EXE,0"

"DefaultIcon"是注册表项,用于指定包含与文件类型关联的图标的文件名。 ",0"告诉资源管理器使用MYPROG.EXE中的第一个图标。 (",1"表示第二个图标。)

Root: HKCR; Subkey: "MyProgramFile\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\MYPROG.EXE"" ""%1"""

"shell\open\command"是注册表项,指定在资源管理器中双击该类型的文件时要执行的程序。周围的引号位于命令行中,因此它可以正确处理长文件名。

答案 1 :(得分:3)

文件关联是一系列注册表项。有关详细信息,请查看How to Use File Associations Microsoft Sample

如果您不想创建系统范围的文件关联,也可以创建specific user file associations

要从脚本创建注册表项,请阅读ISS Documentation: Registry Section。如果您发现任何问题,请回答更具体的问题。

答案 2 :(得分:1)

对我来说很好。 只需重命名MYEXTENSION

[Registry]
Root: HKA ; Subkey: "Software\Classes\.MYEXTENSION"; ValueData: "{#MyAppName}"; Flags: uninsdeletevalue; ValueType: string; ValueName: ""
Root: HKA ; Subkey: "Software\Classes\{#MyAppName}"; ValueData: "{app}\{#MyAppExeName}";  Flags: uninsdeletekey; ValueType: string; ValueName: ""
Root: HKA ; Subkey: "Software\Classes\{#MyAppName}\DefaultIcon"; ValueData: "{app}\{#MyAppExeName},0"; ValueType: string;  ValueName:""
Root: HKA ; Subkey: "Software\Classes\{#MyAppName}\shell\open\command"; ValueData: """{app}\{#MyAppExeName}"" ""%1""";  ValueType: string; ValueName: ""