Используя Inno Setup, чтобы сообщить Windows, мое приложение может открыть общий тип файла [duplicate]

__P() - это просто макрос. В моей системе он определяется следующим образом (в sys/cdefs.h):

#if defined(__STDC__) || defined(__cplusplus)
#define __P(protos)     protos          /* full-blown ANSI C */
#else   /* !(__STDC__ || __cplusplus) */
#define __P(protos)     ()              /* traditional C preprocessor */
#endif  /* !__GNUC__ */

Из этого, похоже, используется для поддержания совместимости с (очень) старыми компиляторами.

3
задан Martin Prikryl 31 March 2016 в 06:40
поделиться

1 ответ

Для общей информации см.:

В Inno Setup вы реализуете это, используя секцию [Registry] :

[Registry]
; Create the application capability key
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

2
ответ дан Martin Prikryl 18 August 2018 в 12:38
поделиться
  • 1
    У меня была такая же проблема, и это прекрасно работало для нее. Благодаря! – vacuumhead 28 June 2018 в 16:28
Другие вопросы по тегам:

Похожие вопросы: