代码之家  ›  专栏  ›  技术社区  ›  Nick

macosx-文件扩展名与应用程序关联-以编程方式

  •  15
  • Nick  · 技术社区  · 14 年前

    我试图让我的程序自动关联某些要由它打开的文件扩展名,但我不知道如何在MacOSX中这样做。我不是在问如何将程序与GUI中的文件扩展名相关联,而是希望能够将其编程到我的程序中。

    4 回复  |  直到 6 年前
        1
  •  11
  •   André Puel    10 年前

    要向应用程序注册新的文件扩展名,请使用以下默认值命令。
    用文件扩展名(即TXT)替换不带句号的Put_File_Extension_here_。
    将org.category.program替换为程序的com/org名称,即com.apple.itunes。

    $ defaults write com.apple.LaunchServices LSHandlers -array-add \
    "<dict><key>LSHandlerContentTag</key>
    <string>PUT_FILE_EXTENSION_HERE_WITHOUT_PERIOD</string><key>LSHandlerContentTagClass</key>
    <string>public.filename-extension</string><key>LSHandlerRoleAll</key>
    <string>org.category.program</string></dict>"
    


    将文件扩展名添加到启动服务后,必须重新启动启动启动服务守护程序,以便它重新读取配置文件。

    您可以运行下面的命令重新启动启动服务,也可以简单地重新启动计算机。登录/注销也可以,但我没有尝试过。

    $ /System/Library/Frameworks/CoreServices.framework/Versions/A/Framework/LaunchServices.framework/Versions/A/Support/lsregister -kill -domain local -domain system -domain user
    
        3
  •  2
  •   Donald Duck user7392049    6 年前

    如果右键单击.app文件并选择“显示包内容”,将出现一个名为 Contents ,在该文件夹中,将有一个名为 info.plist 还有一个文件夹 Resources (如果其中任何一个不存在,则创建它们)。如果要关联文件扩展名 .myfileextension 使用您的程序,您希望具有该扩展名的文件将图标包含在名为 icon.icns 复制文件 ICNS 进入 资源 文件夹并将以下代码添加到 幻灯片 文件就在 </dict> 标签:

    <array>
        <dict>
            <key>CFBundleTypeRole</key>
            <string>Editor</string>
            <key>CFBundleTypeIconFile</key>
            <string>icon.icns</string>                    <!-- change this -->
            <key>CFBundleTypeExtensions</key>
            <array>
                <string>myfileextension</string>          <!-- change this -->
            </array>
            <key>CFBundleTypeName</key>
            <string>File extension description</string>   <!-- change this -->
            <key>LSHandlerRank</key>
            <string>Owner</string>
        </dict>
    </array>
    

    标记的线条 <!-- change this --> 在上面的代码中,应该根据您希望扩展具有的属性进行更改。 ICNS 应该更改为您放入的图标的名称。 资源 文件夹,您希望调用文件扩展名, myfileextension 应更改为要与程序关联的文件扩展名(不带点),以及 File extension description 应该更改为您希望文件扩展名具有的描述(例如,对于.doc文件,它将是“Microsoft Word文档”)。

    另外,你可以查一下 here 了解其他值的含义以及是否需要更改它们。这里还列出了其他值,您可以根据需要添加这些值。

        4
  •  0
  •   André Aulich    8 年前

    我详细描述了整个事情 https://moosystems.com/articles/8-double-click-on-files-in-finder-to-open-them-in-your-python-and-tk-application.html .

    这包括通过py2app绑定应用程序,向info.plist文件添加某些键,并在应用程序中安装事件处理程序。