5

How is it possible to have listed my application on the Windows default apps list?

I have a special Java based video player application with an installer created by Inno Setup. I want my application to be listed on the selectable video players list on Windows 10 (I also don't know how to do it with older Windows versions).

Martin Prikryl
  • 188,800
  • 56
  • 490
  • 992
Vmxes
  • 2,329
  • 2
  • 19
  • 34

1 Answers1

5

For generic information, see:

In Inno Setup, you implement this using [Registry] section:

[Registry]
; Create the application capability key
; (The location of the key does not matter)
Root: HKLM; Subkey: "Software\My Company"; Flags: uninsdeletekeyifempty
Root: HKLM; Subkey: "Software\My Company\My Program"; Flags: uninsdeletekeyifempty
Root: HKLM; Subkey: "Software\My Company\My Program\Capability"; \
    ValueType: string; ValueName: "ApplicationDescription"; \
    ValueData: "This is My Program that does stuff"; Flags: uninsdeletevalue
Root: HKLM; Subkey: "Software\My Company\My Program\Capability"; \
    ValueType: string; ValueName: "ApplicationName"; ValueData: "My Program"; \
    Flags: uninsdeletevalue
; List of extensions the application supports
Root: HKLM; \
    Subkey: "Software\My Company\My Program\Capability\FileAssociations"; \
    ValueType: string; ValueName: ".jpg"; ValueData: "MyProgram.JPEG"; \
    Flags: uninsdeletevalue

; Add the capability key to list of registered applications
Root: HKLM; Subkey: "Software\RegisteredApplications"; \
    ValueType: string; ValueName: "My Program"; \
    ValueData: "Software\My Company\My Program\Capability"; \
    Flags: uninsdeletevalue

; For each extension that the application supports
Root: HKCR; Subkey: "MyProgram.JPEG"; Flags: uninsdeletekeyifempty
Root: HKCR; Subkey: "MyProgram.JPEG"; \
    ValueType: string; ValueName: ""; ValueData: "MyProgram JPEG"; \
    Flags: uninsdeletevalue
Root: HKCR; Subkey: "MyProgram.JPEG\DefaultIcon"; Flags: uninsdeletekeyifempty
Root: HKCR; Subkey: "MyProgram.JPEG\DefaultIcon"; \
    ValueType: string; ValueName: ""; ValueData: "{app}\MyProg.exe,1"; \
    Flags: uninsdeletevalue
Root: HKCR; Subkey: "MyProgram.JPEG\Shell"; Flags: uninsdeletekeyifempty
Root: HKCR; Subkey: "MyProgram.JPEG\Shell\open"; Flags: uninsdeletekeyifempty
Root: HKCR; Subkey: "MyProgram.JPEG\Shell\open\Command"; \
    Flags: uninsdeletekeyifempty
Root: HKCR; Subkey: "MyProgram.JPEG\Shell\open\Command"; \
    ValueType: string; ValueName: ""; ValueData: """{app}\MyProg.exe"" ""%1"""; \
    Flags: uninsdeletevalue

In Inno Setup 6, you should modify the code as follows to support non-administrative install mode:

  1. Replace HKLM in the first block with HKA;
  2. Replace HKCR with HKA and add the Software\Classes\ prefix to the Subkey in the second block.

Set Default Programs

Set Program Associations

Martin Prikryl
  • 188,800
  • 56
  • 490
  • 992
  • 1
    I had the same problem and this worked beautifully for it. Thanks! – vacuumhead Jun 28 '18 at 16:28
  • I eventually found that I needed to also add these lines so that files would actually appear to use the association created with the registry keys shown here: `Root: HKA; Subkey: "Software\Classes\.ABC\OpenWithProgids"; ValueType: string; ValueName: "{#FileAssocKey}"; ValueData: ""; Flags: uninsdeletevalue Root: HKA; Subkey: "Software\Classes\Applications\ABC.exe\SupportedTypes"; ValueType: string; ValueName: ".ABC"; ValueData: ""` – StayOnTarget Aug 03 '22 at 20:24