【问题标题】:How to change file associations in Inno-setup如何在 Inno-setup 中更改文件关联
【发布时间】:2011-01-24 22:56:19
【问题描述】:

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

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

它是一个注册表项吗?

【问题讨论】:

    标签: inno-setup


    【解决方案1】:

    在 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" 告诉 Explorer 使用来自 MYPROG.EXE 的第一个图标。 (",1" 表示第二个图标。)

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

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

    【讨论】:

    • 这应该是公认的答案。它没有链接到其他页面,而是清楚地解释了注册文件扩展名应该采取哪些步骤。
    【解决方案2】:

    文件关联是一系列注册表项。欲了解更多信息,请查看How to Use File Associations Microsoft Sample

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

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

    【讨论】:

      【解决方案3】:

      这对我很有效。 只需重命名 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: ""
      

      【讨论】:

        【解决方案4】:
        #define MyAppAssocExt ".mp3"
        

        [Registry]
        Root: HKA; Subkey: "Software\Classes\{#MyAppAssocExt}\OpenWithProgids"; ValueType: string; ValueName: "{#MyAppAssocKey}"; ValueData: ""; Flags: uninsdeletevalue
        Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}"; ValueType: string; ValueName: ""; ValueData: "{#MyAppAssocName}"; Flags: uninsdeletekey
        Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0"
        Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1"""
        Root: HKA; Subkey: "Software\Classes\Applications\{#MyAppExeName}\SupportedTypes"; ValueType: string; ValueName: ".myp"; ValueData: ""
        
        [Icons]
        Name: "{group}\도깨비 플레이어"; Filename: "{app}\XMPlayer.exe"
        Name: "{userdesktop}\도깨비 플레이어"; Filename: "{app}\XMPlayer.exe"; WorkingDir: "{app}"; IconFilename: "{app}\XMPlayer.exe";
        Name: "{group}\{cm:UninstallProgram,Goblin Player}"; Filename: "{uninstallexe}";  
        

        【讨论】:

        • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
        猜你喜欢
        • 2014-12-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多