7

私のアプリケーションには次の Info.plist があります。問題は、拡張子 myapp で保存したファイルが、アイコン セットから作成した MyApp アイコンを取得していないように見えることです (アプリケーションはアイコンを正しく使用します)。 plistで間違っています。

ある時点でアプリケーションを実行しているときにこれが機能した場合、保存したドキュメントが特定のアイコンで突然表示されると想定しています。

これが問題になる場合、ドキュメントは一連の NSCoder ベースのクラスから保存されます。これらのドキュメントをクリックすると、アプリケーションが開き、ファイルが正しく読み込まれるため、アイコンをファイルに表示するために何が欠けているのか混乱してしまいます....

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleDevelopmentRegion</key>
    <string>en</string>
    <key>CFBundleDocumentTypes</key>
    <array>
        <dict>
            <key>CFBundleTypeExtensions</key>
            <array>
                <string>myapp</string>
            </array>
            <key>CFBundleTypeIconFile</key>
            <string>MyApp</string>
            <key>CFBundleTypeOSTypes</key>
            <array>
                <string>ASWM</string>
            </array>
            <key>CFBundleTypeName</key>
            <string>MyApp project file</string>
            <key>CFBundleTypeRole</key>
            <string>Editor</string>
        </dict>
    </array>
    <key>CFBundleExecutable</key>
    <string>${EXECUTABLE_NAME}</string>
    <key>CFBundleIconFile</key>
    <string>MyApp</string>
    <key>CFBundleIdentifier</key>
    <string>com.workmonkeys.${PRODUCT_NAME:rfc1034identifier}</string>
    <key>CFBundleInfoDictionaryVersion</key>
    <string>6.0</string>
    <key>CFBundleName</key>
    <string>${PRODUCT_NAME}</string>
    <key>CFBundlePackageType</key>
    <string>APPL</string>
    <key>CFBundleShortVersionString</key>
    <string>1.0</string>
    <key>CFBundleSignature</key>
    <string>ASWM</string>
    <key>CFBundleVersion</key>
    <string>1</string>
    <key>LSApplicationCategoryType</key>
    <string>public.app-category.developer-tools</string>
    <key>LSMinimumSystemVersion</key>
    <string>${MACOSX_DEPLOYMENT_TARGET}</string>
    <key>NSHumanReadableCopyright</key>
    <string>Copyright © 2012 Me. All rights reserved.</string>
    <key>NSMainNibFile</key>
    <string>MainMenu</string>
    <key>NSPrincipalClass</key>
    <string>NSApplication</string>
</dict>
</plist>
4

1 に答える 1

12

最初にアプリケーションを作成したときに、システムが plist の古いコピーをキャッシュしたに違いないことがわかりました。必要なのは、打ち上げサービス データベースを再構築することだけでした。

ここに記載されているように、lsregisterコマンドを使用しました...

http://www.tuaw.com/2009/06/11/terminal-tips-rebuild-your-launch-services-database-to-clean-up/

アプリケーションを再実行し、ドキュメントにそれぞれのアイコンが関連付けられていることをビンゴします。

于 2012-09-17T20:53:27.590 に答える