MacOSX - расширение файла связано с приложением - программно - PullRequest
15 голосов
/ 04 июня 2010

Я пытаюсь заставить мою программу автоматически связывать определенные расширения файлов, чтобы открыть ее, но я не уверен, как это сделать в MacOSX.Я не спрашиваю, как связать программу с расширением файла в графическом интерфейсе, я хочу иметь возможность запрограммировать ее в моей программе.

Ответы [ 4 ]

11 голосов
/ 04 июня 2010

Чтобы зарегистрировать новое расширение файла в приложении, используйте следующую команду по умолчанию.
Замените PUT_FILE_EXTENSION_HERE_WITHOUT_PERIOD расширением файла, т.е. txt.
Замените 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>"


После того, как вы добавили расширение файла к службам запуска, вы должны перезапустить службы запуска deamon, чтобы он перечитал файл конфигурации.

Вы можете либо запустить приведенную ниже команду, чтобы перезапустить службы запуска, либо просто перезагрузить компьютер. Вход в систему / выход из системы также может сделать это, но я не пробовал.

$ /System/Library/Frameworks/CoreServices.framework/Versions/A/Framework/LaunchServices.framework/Versions/A/Support/lsregister -kill -domain local -domain system -domain user
7 голосов
/ 04 июня 2010
2 голосов
/ 19 июня 2018

Если вы щелкнете правой кнопкой мыши по файлу .app и выберете «Показать содержимое пакета», будет папка с именем Contents, и в этой папке будет файл с именем info.plist и папка с именем * 1003. * (если какой-либо из них не существует, создайте их). Если вы хотите связать расширение файла .myfileextension с вашей программой и хотите, чтобы файлы с этим расширением имели значок, содержащийся в файле с именем icon.icns, скопируйте файл icon.icns в папку Resources и добавьте следующее код файла info.plist прямо перед тегом </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 --> в приведенном выше коде, должны быть изменены в зависимости от того, какие свойства вы хотите иметь для расширения. icon.icns следует заменить на любое имя, которое вы называете значком, который вы положили в папку Resources, и вы хотите, чтобы расширение файла называлось, myfileextension следует заменить на расширение файла, которое вы хотите связать с вашей программой (без точка), и File extension description следует изменить на описание, которое вы хотите иметь расширение файла (например, для файлов .doc это будет «документ Microsoft Word»).

Кроме того, вы можете проверить здесь , чтобы увидеть, что означают другие значения и нужно ли их менять. Там также перечислены другие значения, которые вы можете добавить, если они вам нужны.

0 голосов
/ 11 июля 2016

Я описал все это подробно в https://moosystems.com/articles/8-double-click-on-files-in-finder-to-open-them-in-your-python-and-tk-application.html.

Это включает в себя связывание вашего приложения через py2app, добавление определенного ключа в ваш файл Info.plist и установку обработчиков событий в вашем приложении.

...