我需要用户能够双击.pdb文件并使用myPgm.exe打开它。
将文件类型(myData.pdb)与可执行文件(myPgm.exe)相关联的语法是什么?
是注册表项吗?
答案 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: ""