我正在尝试让Inno Setup将三种文件类型与我的应用程序关联,并为每个文件类型分配一个嵌入在我的应用程序中的图标。
我已经更新了这个问题,以反映建议的最新方法。
我已经将两个图标添加到我的主应用程序中,即主应用程序图标和Icon_1和Icon_2,它们是由我的Delphi应用程序使用的文件类型。我使用“项目”菜单下的“资源和图像对话框”来添加它们。我使用的脚本如下:
[Registry]
; Create the application capability key
Root: HKLM; Subkey: "Software\{#MyAppPublisher}"; Flags: uninsdeletekeyifempty
Root: HKLM; Subkey: "Software\{#MyAppPublisher}\{#MyAppName}"; Flags: uninsdeletekeyifempty
Root: HKLM; Subkey: "Software\{#MyAppPublisher}\{#MyAppName}\Capability"; ValueType: string; ValueName: "ApplicationDescription"; ValueData: "Integrated Development Environment for Positron Compilers"; Flags: uninsdeletevalue
Root: HKLM; Subkey: "Software\{#MyAppPublisher}\{#MyAppName}\Capability"; ValueType: string; ValueName: "ApplicationName"; ValueData: "{#MyAppName}"; Flags: uninsdeletevalue
; List of extensions the application supports
Root: HKLM; Subkey: "Software\{#MyAppPublisher}\{#MyAppName}\Capability\FileAssociations"; ValueType: string; ValueName: ".bas"; ValueData: "{#MyAppName}.bas"; Flags: uninsdeletevalue
Root: HKLM; Subkey: "Software\{#MyAppPublisher}\{#MyAppName}\Capability\FileAssociations"; ValueType: string; ValueName: ".inc"; ValueData: "{#MyAppName}.inc"; Flags: uninsdeletevalue
Root: HKLM; Subkey: "Software\{#MyAppPublisher}\{#MyAppName}\Capability\FileAssociations"; ValueType: string; ValueName: ".psproj"; ValueData: "{#MyAppName}.psproj"; Flags: uninsdeletevalue
; Add the capability key to list of registered applications
Root: HKLM; Subkey: "Software\RegisteredApplications"; ValueType: string; ValueName: "{#MyAppName}"; ValueData: "Software\#MyAppPublisher}\{#MyAppName}\Capability"; Flags: uninsdeletevalue
; For each extension that the application supports
Root: HKCR; Subkey: "{#MyAppName}.bas"; Flags: uninsdeletekeyifempty
Root: HKCR; Subkey: "{#MyAppName}.bas"; ValueType: string; ValueName: ""; ValueData: "{#MyAppName} bas"; Flags: uninsdeletevalue
Root: HKCR; Subkey: "{#MyAppName}.bas\DefaultIcon"; Flags: uninsdeletekeyifempty
Root: HKCR; Subkey: "{#MyAppName}.bas\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},1"; Flags: uninsdeletevalue
Root: HKCR; Subkey: "{#MyAppName}.bas\Shell"; Flags: uninsdeletekeyifempty
Root: HKCR; Subkey: "{#MyAppName}.bas\Shell\open"; Flags: uninsdeletekeyifempty
Root: HKCR; Subkey: "{#MyAppName}.bas\Shell\open\Command"; Flags: uninsdeletekeyifempty
Root: HKCR; Subkey: "{#MyAppName}.bas\Shell\open\Command"; ValueType: string; ValueName: ""; ValueData: """{app}{#MyAppExeName}"" ""1"""; Flags: uninsdeletevalue
Root: HKCR; Subkey: "{#MyAppName}.inc"; Flags: uninsdeletekeyifempty
Root: HKCR; Subkey: "{#MyAppName}.inc"; ValueType: string; ValueName: ""; ValueData: "{#MyAppName} inc"; Flags: uninsdeletevalue
Root: HKCR; Subkey: "{#MyAppName}.inc\DefaultIcon"; Flags: uninsdeletekeyifempty
Root: HKCR; Subkey: "{#MyAppName}.inc\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},1"; Flags: uninsdeletevalue
Root: HKCR; Subkey: "{#MyAppName}.inc\Shell"; Flags: uninsdeletekeyifempty
Root: HKCR; Subkey: "{#MyAppName}.inc\Shell\open"; Flags: uninsdeletekeyifempty
Root: HKCR; Subkey: "{#MyAppName}.inc\Shell\open\Command"; Flags: uninsdeletekeyifempty
Root: HKCR; Subkey: "{#MyAppName}.inc\Shell\open\Command"; ValueType: string; ValueName: ""; ValueData: """{app}{#MyAppExeName}"" ""1"""; Flags: uninsdeletevalue
Root: HKCR; Subkey: "{#MyAppName}.psproj"; Flags: uninsdeletekeyifempty
Root: HKCR; Subkey: "{#MyAppName}.psproj"; ValueType: string; ValueName: ""; ValueData: "{#MyAppName} psproj"; Flags: uninsdeletevalue
Root: HKCR; Subkey: "{#MyAppName}.psproj\DefaultIcon"; Flags: uninsdeletekeyifempty
Root: HKCR; Subkey: "{#MyAppName}.psproj\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},1"; Flags: uninsdeletevalue
Root: HKCR; Subkey: "{#MyAppName}.psproj\Shell"; Flags: uninsdeletekeyifempty
Root: HKCR; Subkey: "{#MyAppName}.psproj\Shell\open"; Flags: uninsdeletekeyifempty
Root: HKCR; Subkey: "{#MyAppName}.psproj\Shell\open\Command"; Flags: uninsdeletekeyifempty
Root: HKCR; Subkey: "{#MyAppName}.psproj\Shell\open\Command"; ValueType: string; ValueName: ""; ValueData: """{app}{#MyAppExeName}"" ""1"""; Flags: uninsdeletevalue
现在似乎已经失去了关联。我知道文件中有两个图标,因为当我创建快捷方式时,我可以从任一图标中选择。我需要做什么才能在我的文件上获得正确的图标?
在注册表中的HKEY_CLASSES_ROOT
下的.bas
:
DefaultIcon - not set
ProgWithIDs - not set
PersitentHandler - {5e941d80-bf96-11cd-b579-08002b30bfeb}