ফাইল টাইপ অ্যাসোসিয়েশন রিভার্ট করুন


12

আমি মাঝে মাঝে আইটিউনস মিউজিক স্টোর প্যাকেজগুলির সাথে কাজ করি। এই প্যাকেজগুলির একটি .itmspএক্সটেনশন রয়েছে। পছন্দ করুন .app, .itmspমূলত একটি ধারক ডিরেক্টরি। .itmspফোল্ডারগুলিতে এক্সএমএল এবং মিডিয়া ফাইল রয়েছে।

সর্বশেষতম এক্সকোড এবং / অথবা ম্যাক ওএস এক্স আপডেট (ম্যাক ওএস 10.8.3 এ এক্সকোড 4.6.1) .itmspএক্সটেনশন সহ ডিরেক্টরিগুলির জন্য ফাইল টাইপ সমিতি হাইজ্যাক করেছে । পূর্বে তাদের সাথে সাধারণ ফোল্ডারগুলির মতো আচরণ করা হত - ভিতরে দেখার জন্য কোনও ডাবল-ক্লিকের প্রয়োজন নেই। এখন, তাদের সাথে আলাপচারিতার জন্য আমাকে তাদের ডাবল-ক্লিক করতে হবে। আমি যখন করি তখন অ্যাপ্লিকেশন লোডার নামে একটি প্রোগ্রাম সেগুলি খোলার চেষ্টা করে। ভিতরে দেখার জন্য আমাকে ডান ক্লিক করতে হবে এবং "প্যাকেজ বিষয়বস্তু দেখান" নির্বাচন করতে হবে। আমি যেকোন সময় এই হাজার হাজার ফাইলের সাথে কাজ করছি, যাতে এটি কাজ করে না।

আমি তথ্য এবং আরসিডিএফফল্ট অ্যাপ্লিকেশন ব্যবহার করে ফাইল টাইপ অ্যাসোসিয়েশন পরিবর্তন বা অপসারণের চেষ্টা করেছি। কোনটিই কাজ করে না। ফাইল টাইপ সমিতি সরিয়ে ফেলা .itmspডিরেক্টরিগুলি খালি ফাইলগুলিতে রূপান্তরিত করে। পুরোপুরিভাবে অ্যাপ্লিকেশন লোডার.এপ মোছা যায়। উভয় ক্ষেত্রেই আমি ডান-ক্লিক ছাড়া সামগ্রীগুলি ব্রাউজ করতে পারি না।

পূর্বে গৃহীত উত্তর কিছুদিনের জন্য একটি আচরণ কাজ: lsregister -u /Applications/Contents/Applications/Application\ Loader.app/এটা কাজ যেহেতু আমি Xcode এবং / অথবা ম্যাক OS X আপনি Xcode ইনস্টল করা থাকে, আপনি একটি ডিরেক্টরির নামকরণ করে এই নিজেকে পরীক্ষা করতে সক্ষম হওয়া উচিত আপডেট বন্ধ হচ্ছে foo.itmsp

আবার কীভাবে .itmspফাইলগুলি ফোল্ডার হিসাবে বিবেচিত হবে তা কীভাবে করব ?


আপনি কি এক্সকোড অ্যাপ্লিকেশন আইকনটিতে একটি ফাইল টেনে আনার এবং ফেলে দেওয়ার চেষ্টা করেছেন এবং দেখুন যে এটি যা চায় তা করে?
মিঃ ডানিয়েল

পরামর্শের জন্য ধন্যবাদ. এটি হাতে ইস্যুটির সাথে প্রাসঙ্গিক নয়, তাই আমি আমার উদ্দেশ্যটি পরিষ্কার করার জন্য আমার প্রশ্নটি সম্পাদনা করার চেষ্টা করব।
মাইক্রোমাইকেল

1
আপনি ওএস এক্স এর কোন সংস্করণটি চালাচ্ছেন? এক্সকোডের কোন সংস্করণ?
ওল্ড প্রো

আমি আমার উত্তরটি মুছে ফেলেছি যা সিএফবান্ডলডোকামেন্টটিপস থেকে প্রকারগুলি মুছে ফেলেছে এবং পরিষেবা চালু করে ডেটাবেসকে মেরেছিল। এটি কিছুক্ষণের জন্য কাজ করে তবে মনে হয় এটি পরে আবার কিছুটা আবার আত্মস্থ করে।
মার্খুন্তে

উত্তর:


11

সমস্যা: .itmsp ফোল্ডারগুলি ফাইল হিসাবে দেখানো হয়

ফাইন্ডার .itmsp ফোল্ডারগুলিকে প্যাকেজ হিসাবে বিবেচনা করে, অর্থাত্ তারা একক ফাইল। উদাহরণস্বরূপ, কলাম ভিউতে .itmsp ফোল্ডারে থাকা যে কোনও কিছুই অদৃশ্য, কেবলমাত্র নথির আইকনটি দেখানো হয়েছে:

এখানে চিত্র বর্ণনা লিখুন

নিম্নলিখিত শর্তগুলি সত্য হলে ( বান্ডেল প্রোগ্রামিং গাইড থেকে ) অনুসন্ধানকারী ডিরেক্টরিটিকে একটি প্যাকেজ হিসাবে বিবেচনা করে :

  1. ডিরেক্টরিটির একটি পরিচিত ফাইল নাম এক্সটেনশন রয়েছে: .app, .bundle, .Framework, .plugin, .kext, এবং আরও কিছু (যেমন সংজ্ঞায়িত করা হয়েছে /System/Library/CoreServices/CoreTypes.bundle/Contents/Info.plist। এটি একটি বাইনারি প্লাস্ট, এটি এক্সকোড দিয়ে খুলুন open -a Xcode Info.plist:)।

  2. ডিরেক্টরিটিতে একটি এক্সটেনশান রয়েছে যা অন্য কিছু অ্যাপ্লিকেশন দাবী একটি প্যাকেজ ধরণের প্রতিনিধিত্ব করে ( এটি বের করার জন্য com.apple.packageআউটপুটটি সন্ধান করুন mdls -name kMDItemContentTypeTree <foldername>))

  3. ডিরেক্টরিটির প্যাকেজ বিট সেট রয়েছে (যদি GetFileInfo -ab <foldername>ফিরে আসে 1তবে সেট করা থাকে set)

কেস ২। আইটিএমএস ফোল্ডারে প্রযোজ্য: Application Loader.appরফতানি টাইপ করে com.apple.itunes-producer.itmspএবং এটি অনুসারে সেট করে com.apple.package:

$ mkdir foo.itmsp
$ mdls -name kMDItemContentTypeTree foo.itmsp/
kMDItemContentTypeTree = (
    "com.apple.itunes-producer.itmsp",
    "com.apple.package",
    (...)
)
$ grep -B 5 -A 8 com.apple.package /Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/Info.plist 
    <key>UTExportedTypeDeclarations</key>
    <array>
        <dict>
            <key>UTTypeConformsTo</key>
            <array>
                <string>com.apple.package</string>
                <string>public.composite-content</string>
            </array>
            <key>UTTypeDescription</key>
            <string>iTunes Package</string>
            <key>UTTypeIconFile</key>
            <string>ITMSP.icns</string>
            <key>UTTypeIdentifier</key>
            <string>com.apple.itunes-producer.itmsp</string>

একটি সমাধান: পুনরায় ঘোষণা প্রকার com.apple.itunes-producer.itmsp

একটি সমাধান হ'ল ফোল্ডার হিসাবে প্রকার com.apple.itunes-producer.itmspএবং এক্সটেনশানটিকে পুনরায় ঘোষণা করা এবং পরিষেবাগুলি লঞ্চ পরিষেবাগুলিকে পরিবর্তিত প্রকারের ঘোষণাটি ব্যবহার করতে বাধ্য করা।itmsp

গুরুত্বপূর্ণ তথ্য:

যদিও এটি ওপির সমস্যাটি নির্ভরযোগ্যভাবে সমাধান করে, প্রস্তাবিত সমাধানটি অন্যান্য প্যাকেজগুলিতে প্রয়োগ করা হলে সেগুলি ফোল্ডার হিসাবে প্রদর্শন করে না।

আমি খুঁজে পেয়েছি যে প্রস্তাবিত সমাধানটি কেবলমাত্র একটি প্রমিত মানের পাথের মধ্যে থাকা অ্যাপ্লিকেশন দ্বারা ঘোষিত ফাইল প্রকারের সাথে কাজ করে বলে মনে হচ্ছে।

এটি ক্ষেত্রে Application Loader.appঅবস্থিত, যা অবস্থিত /Applications/Xcode.app/Contents/Applications/

আপনি যদি আংশিক সমাধানে আগ্রহী হন তবে এই উত্তরটির শেষে দেখুন।

.Itmsp ফোল্ডারগুলি ফোল্ডার হিসাবে ফোল্ডার হিসাবে প্রদর্শিত করতে পরবর্তী পদক্ষেপগুলি অনুসরণ করুন:

  1. অ্যাপ্লিকেশন ফোল্ডারে অটোমেটর খুলুন এবং অ্যাপ্লিকেশন নির্বাচন করুন :

    এখানে চিত্র বর্ণনা লিখুন

  2. লাইব্রেরির তালিকায় ইউটিলিটিগুলি নির্বাচন করুন, রান শেল স্ক্রিপ্টটি নির্বাচন করুন এবং ডানদিকে ফলকে টানুন:

    এখানে চিত্র বর্ণনা লিখুন

  3. এর সাথে ডিফল্ট স্ক্রিপ্ট সামগ্রীগুলি প্রতিস্থাপন করুন exit 0:

    এখানে চিত্র বর্ণনা লিখুন

  4. অ্যাপ্লিকেশনটি itmspOpener হিসাবে সংরক্ষণ করুন:

    এখানে চিত্র বর্ণনা লিখুন

  5. বন্ধ

  6. itmspOpener.appএর সামগ্রীগুলি নির্বাচন করুন এবং দেখান:

    এখানে চিত্র বর্ণনা লিখুন

  7. বিষয়বস্তু> তথ্য.পিস্টের সন্ধান করুন এবং এটি আপনার প্রিয় সম্পাদক দিয়ে খুলুন:

    এখানে চিত্র বর্ণনা লিখুন

  8. এই বিভাগগুলিকে এতে প্রতিস্থাপন করুন Info.plist:

    <key>CFBundleDocumentTypes</key>
    <array>
        <dict>
            <key>CFBundleTypeExtensions</key>
            <array>
                <string>itmsp</string>
            </array>
            <key>CFBundleTypeName</key>
                <string>itmsp folder</string>
            <key>CFBundleTypeRole</key>
                <string>Viewer</string>
            <key>CFBundleTypeIconFile</key>
                <string>folder</string>
            <key>LSTypeIsPackage</key>
                <false/>
            <key>LSHandlerRank</key>
                <string>Owner</string>
        </dict>
    </array>
    (...)
    <key>UTExportedTypeDeclarations</key>
    <array>
        <dict>
            <key>UTTypeConformsTo</key>
            <array>
                <string>kUTTypeDirectory</string>
            </array>
            <key>UTTypeDescription</key>
            <string>itmsp folder</string>
            <key>UTTypeIconFile</key>
            <string>folder.icns</string>
            <key>UTTypeIdentifier</key>
            <string>com.apple.itunes-producer.itmsp</string>
            <key>UTTypeTagSpecification</key>
            <dict>
                <key>public.filename-extension</key>
                <string>itmsp</string>
            </dict>
        </dict>
    </array>
    

    দ্রষ্টব্য: কেন kUTTypeDirectoryপরিবর্তে public.directoryমধ্যে UTExportedTypeDeclarations? থেকে অ্যাপলের ডকুমেন্টেশন : গুরুত্বপূর্ণ: আপনার কোডে সিস্টেম-সংজ্ঞায়িত UTIs ব্যবহার করার সময়, আপনি ধ্রুবক সংজ্ঞায়িত ব্যবহার করা উচিত UTCoreTypes.hলঞ্চ সার্ভিস কাঠামোর মধ্যে যখন উপলব্ধ বদলে প্রকৃত ইউটিআই স্ট্রিং। উদাহরণস্বরূপ, "com.apple.application" এর চেয়ে kUTType অ্যাপ্লিকেশন পাস করুন। "সিস্টেম-ঘোষিত ইউনিফর্ম টাইপ আইডেন্টিফায়ারস" ইউটিআই স্ট্রিং ছাড়াও এই ধ্রুবকগুলিকে তালিকাভুক্ত করে।

  9. একটি .itmsp ফাইল সংযুক্ত করুন itmspOpenerএবং বোতাম টিপুন Change All...:

    এখানে চিত্র বর্ণনা লিখুন

  10. লঞ্চ পরিষেবা ডেটাবেস পুনরায় সেট করুন:

    $ lsregister -kill -r -domain local -domain system -domain user
    

    (ওএস এক্স ১০.৮ lsregisterএ অবস্থিত /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/))

  11. একটি .itmsp ফোল্ডার তৈরি করুন এবং এর বৈশিষ্ট্যগুলি তালিকাভুক্ত করুন:

    $ mkdir foo3.itmsp
    $ mdls -name kMDItemContentTypeTree foo3.itmsp/
    kMDItemContentTypeTree = (
        "public.folder",
        "public.directory",
        "public.item"
    )
    

    লঞ্চ পরিষেবাদির ডাটাবেসটি পুনরায় সেট করা হওয়ার কারণে, এখন অনুসন্ধানক .itmsp ফোল্ডারগুলি ফোল্ডার হিসাবে দেখায়।

  12. itmspOpener.appএর plist ফাইল লোড এবং নিবন্ধনের জন্য খুলুন com.apple.itunes-producer.itmsp:

    $ open ~/Desktop/itmspOpener.app
    
  13. শুরু Application Loader.app:

    $ open '/Applications/Xcode.app/Contents/Applications/Application Loader.app'
    

    ফোল্ডারটি foo3.itmspএখনও ফোল্ডার হিসাবে প্রদর্শিত হওয়া উচিত।

  14. ফোল্ডার বৈশিষ্ট্য আবার পরীক্ষা করুন:

    $ mdls -name kMDItemContentTypeTree foo3.itmsp/
    kMDItemContentTypeTree = (
        "public.directory",
        "public.item",
        "public.content"
    )
    

    com.apple.package ফোল্ডারের মেটাডেটা বৈশিষ্ট্যে যুক্ত করা হয়নি, এজন্য ফাইন্ডার এখনও .itmsp ফোল্ডারগুলি ফোল্ডার হিসাবে প্রদর্শন করে!

স্বয়ংক্রিয় সমাধান: লগইন করার পরে .itmsp ফোল্ডারগুলি ফোল্ডার হিসাবে প্রদর্শন করা হচ্ছে

লগইন করার পরে .itmsp ফোল্ডারগুলি ফোল্ডার হিসাবে প্রদর্শন করতে:

  1. উপরে বর্ণিত হিসাবে itmspOpener.appএটি তৈরি এবং সংশোধন করুন Info.plist

  2. /usr/local/bin/itmspTypeLoaderএই বিষয়বস্তু দিয়ে তৈরি করুন ( itmspOpenerযেখানে itmspOpener.appঅবস্থিত সেখানে ভেরিয়েবল পয়েন্ট যেখানে প্রয়োজন সেখানে পরিবর্তন করুন):

    #!/bin/bash
    
    itmspOpener="/Users/jaume/Applications/itmspOpener.app/"
    
    echo "$(date): Starting" > /tmp/itmspTypeLoader.log
    sleep 15
    echo "$(date): Deleting Launch Services database" >> /tmp/itmspTypeLoader.log
    /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -kill -r -domain local -domain system -domain user >> /tmp/itmspTypeLoader.log
    sleep 15
    echo "$(date): Starting $itmspOpener" >> /tmp/itmspTypeLoader.log
    open $itmspOpener >> /tmp/itmspTypeLoader.log
    sleep 1
    echo "$(date): Starting Application Loader.app" >> /tmp/itmspTypeLoader.log
    open "/Applications/Xcode.app/Contents/Applications/Application Loader.app/"
    
    # Wait until process "Application Loader.app" exists
    while [ $(ps -ef|grep -v grep|grep -c "Application Loader") -ne 1 ]; do
        sleep 1
        echo "$(date): Waiting" >> /tmp/itmspTypeLoader.log
    done
    # Send TERM signal
    kill -TERM $(ps -ef|grep "Application Loader"|grep -v grep|awk "{print \$2}")
    if [ $? -eq 0 ]; then
        echo "$(date): Application Loader killed" >> /tmp/itmspTypeLoader.log
    else
        echo "$(date): Application Loader could not be killed" >> /tmp/itmspTypeLoader.log
    fi
    echo "$(date): Exiting" >> /tmp/itmspTypeLoader.log
    

    sleep 15দৌড়ানোর আগে এবং পরে উভয়ই lsregisterঅত্যন্ত গুরুত্বপূর্ণ। আপনি যদি পছন্দসই ফলাফল না দেখেন তবে বিভিন্ন বিলম্বের চেষ্টা করুন।

  3. /usr/local/bin/itmspTypeLoaderLauncherএই বিষয়বস্তু দিয়ে তৈরি করুন :

    #!/bin/bash
    
    # $1 returns the short name of the user who is logging in
    su - $1 -c /usr/local/bin/itmspTypeLoader &
    
  4. উভয় স্ক্রিপ্ট নির্বাহযোগ্য সেট করুন:

    $ sudo chmod a+x /usr/local/bin/itmspTypeLoader /usr/local/bin/itmspTypeLoaderLauncher 
    
  5. লগইন হুক/usr/local/bin/itmspTypeLoaderLauncher হিসাবে সেট করুন :

    $ sudo defaults write com.apple.loginwindow LoginHook /usr/local/bin/itmspTypeLoaderLauncher
    
  6. পরিবর্তনগুলি কার্যকর করতে পুনরায় বুট করুন। লগ ইন করার পরে আপনার এটি দেখতে হবে:

    এখানে চিত্র বর্ণনা লিখুন

    এবং lsregister -dumpপ্রকাশ করা উচিত যে itmspOpener.appএর UTExportedTypeDeclarationsচেয়ে বেশি অগ্রাধিকার নেয় Application Loader.app:

    $ lsregister -dump | less
    bundle  id:            24748
            path:          /Users/jaume/Desktop/itmspOpener.app/
            name:          itmspOpener
            (...)
            flags:         apple-internal  relative-icon-path  ui-element  has-min-sys-version-by-arch  hi-res-capable  user-can-change-hi-res-mode  
            item flags:    container  package  application  extension-hidden  native-app  scriptable  services  x86_64  
            (...)
            --------------------------------------------------------
            type    id:            33796
                    uti:           com.apple.itunes-producer.itmsp
                    description:   itmsp folder
                    flags:         exported  active  apple-internal  trusted  
                    icon:          Contents/Resources/folder.icns
                    conforms to:   kuttypedirectory
                    tags:          .itmsp
            --------------------------------------------------------
            (...)
    bundle  id:            24600
            path:          /Applications/Xcode.app/Contents/Applications/Application Loader.app/
            name:          Application Loader
            (...)
            flags:         apple-internal  relative-icon-path  hi-res-capable  user-can-change-hi-res-mode  
            item flags:    container  package  application  extension-hidden  native-app  i386  x86_64  
            (...)
            --------------------------------------------------------
            type    id:            33832
                    uti:           com.apple.itunes-producer.itmsp
                    description:   iTunes Package
                    flags:         exported  inactive  apple-internal  trusted  
                    icon:          Contents/Resources/ITMSP.icns
                    conforms to:   com.apple.package, public.composite-content
                    tags:          .itmsp
            --------------------------------------------------------
    

    আপনি inactiveঅ্যাপ্লিকেশন লোডার.এপসের ধরণের রফতানিতে পতাকাটি দেখছেন? আমরা অ্যাপ্লিকেশন লোডারকে পরাজিত করেছি।

অ্যাসিড পরীক্ষা: .itmsp ফোল্ডারগুলি এখনও আইটিউনস আপডেটের পরে প্রদর্শিত হয়

আমি সম্প্রতি এক্সকোড আপডেট করেছি:

এখানে চিত্র বর্ণনা লিখুন

এবং এটি নিশ্চিত করতে পারে যে আপডেটের সময় .itmsp ফোল্ডারগুলি ফোল্ডার হিসাবে প্রদর্শিত হয়েছিল:

এখানে চিত্র বর্ণনা লিখুন

এবং পরে:

এখানে চিত্র বর্ণনা লিখুন

একটি আংশিক সমাধান: ডাবল ক্লিক করার পরে প্যাকেজটি সামগ্রীগুলি প্রদর্শন করবে

পূর্বে মন্তব্য হিসাবে, উপরে বর্ণিত পদ্ধতিটি ফাইন্ডার দ্বারা প্যাকেজ হিসাবে প্রদর্শিত সালিসী ফোল্ডারগুলির সাথে কাজ করবে না।

তবে আপনি যদি প্যাকেজটি খোলার জন্য ডাবল-ক্লিক করতে সক্ষম হতে চান তবে একটি bashস্ক্রিপ্ট এবং অটোমেটরের সাহায্যে এটি করার একটি উপায় রয়েছে :

  • স্ক্রিপ্টটি প্যাকেজের অভ্যন্তরে একটি লুকানো, অস্থায়ী ফোল্ডার তৈরি করে, এটি ফাইন্ডারে প্রকাশ করে (এইভাবে প্যাকেজটি ফোল্ডার হিসাবে প্রকাশ করে) এবং তারপরে অস্থায়ী ফোল্ডারটি মুছে ফেলা হয়।

    বিঃদ্রঃ:

    স্ক্রিপ্ট পরিবর্তে একটি লুকানো, অস্থায়ী ফাইল তৈরি করতে পারে। তবে আমি কোনও ফোল্ডার তৈরি করতে পছন্দ করি কারণ rmdirকেবল খালি ফোল্ডারগুলি rmমুছে ফেলা হয় , যখন কোনও ফাইল মুছে ফেলা হয় , তাই যদি কোনও কারণে হয়। স্ক্রিপ্টের সর্বনাশ হয়েছে, কেবল খালি ফোল্ডারগুলি মুছে ফেলা হবে, যা সম্ভবত ফাইলগুলি মুছে ফেলা হবে তেমন খারাপ নয়।

  • অটোমেটর স্ক্রিপ্টটিকে এমন একটি অ্যাপ্লিকেশনে বান্ডিল করে যা প্যাকেজ ফাইলগুলির সাথে যুক্ত হবে।

এই জাতীয় অ্যাপ্লিকেশন তৈরির পদক্ষেপ। আমি নীচের ব্যাখ্যায় প্যাকেজ টাইপের উদাহরণ হিসাবে .itmsp ফাইলগুলি ব্যবহার করব:

  1. অ্যাপ্লিকেশন ফোল্ডারে অটোমেটর খুলুন এবং অ্যাপ্লিকেশন নির্বাচন করুন :

    এখানে চিত্র বর্ণনা লিখুন

  2. লাইব্রেরির তালিকায় ইউটিলিটিগুলি নির্বাচন করুন , রান শেল স্ক্রিপ্টটি নির্বাচন করুন এবং ডানদিকে ফলকে টানুন:

    এখানে চিত্র বর্ণনা লিখুন

  3. সেট পাস ইনপুট করার আর্গুমেন্ট হিসাবে :

    এখানে চিত্র বর্ণনা লিখুন

  4. এটির সাথে ডিফল্ট স্ক্রিপ্ট সামগ্রীগুলি প্রতিস্থাপন করুন:

    for f in "$@"; do
        # If not dealing with a directory, exit
        if [ ! -d "$f" ]; then exit; fi
        # Create a temporary directory inside the itmsp "file"
        tmpdir="$f/.itmspOpener$$"
        if mkdir $tmpdir; then
            # Reveal in Finder
            open -R $tmpdir
            # Delete temporary file
            rmdir $tmpdir
        fi
    done
    
  5. অ্যাপ্লিকেশনটি itmspOpener হিসাবে সংরক্ষণ করুন:

    এখানে চিত্র বর্ণনা লিখুন

  6. বন্ধ

এখন আপনার কাছে একটি অ্যাপ্লিকেশন রয়েছে যা এর সাথে যুক্ত থাকলে ফটোগুলি হিসাবে .itmsp ফাইলগুলি খুলতে পারে।

একটি প্রসাধনী সমস্যা আছে: এটি যেমন দাঁড়িয়ে আছে, সম্পর্কিত ফাইলগুলির স্ট্যান্ডার্ড সাদা নথির আইকন থাকবে:

এখানে চিত্র বর্ণনা লিখুন

আসুন এটিও ঠিক করুন:

  1. অটোমেটারটি বন্ধ রয়েছে তা নিশ্চিত করুন।

  2. এটিএসপোপেনার নির্বাচন করুন এবং এর সামগ্রীগুলি দেখান:

    এখানে চিত্র বর্ণনা লিখুন

  3. বিষয়বস্তু> তথ্য.পিস্টের সন্ধান করুন এবং এটি আপনার প্রিয় সম্পাদক দিয়ে খুলুন:

    এখানে চিত্র বর্ণনা লিখুন

  4. CFBundleDocumentTypesঅ্যারেতে এই কীটির মানটি প্রতিস্থাপন করুন :

    <key>CFBundleTypeName</key>
    <string>itmsp folder</string>
    

    এবং এই কী যুক্ত করুন:

    <key>CFBundleTypeIconFile</key>
    <string>folder</string>
    

    এখন, বিভাগটি এর মতো দেখাচ্ছে:

    এখানে চিত্র বর্ণনা লিখুন

  5. ফাইন্ডারে স্যুইচ করুন, একটি ফোল্ডার নির্বাচন করুন, টিপুন I, বাম উপরের কোণায় ফোল্ডার আইকনটি নির্বাচন করুন এবং এটি দিয়ে অনুলিপি করুন C:

    এখানে চিত্র বর্ণনা লিখুন

  6. পূর্বরূপ খুলুন এবং ক্লিপবোর্ড থেকে ফাইল> নতুন নির্বাচন করুন। ফাইলটি সংরক্ষণ করুন folder.icns:

    এখানে চিত্র বর্ণনা লিখুন

  7. এতে অনুলিপি folder.icnsকরুন itmspOpener/Contents/Resources:

    এখানে চিত্র বর্ণনা লিখুন

  8. একটি .itmsp ফাইল সংযুক্ত করুন itmspOpenerএবং বোতাম টিপুন Change All...:

    এখানে চিত্র বর্ণনা লিখুন

.Itmsp ফাইলগুলির আইকনটি কোনও ফোল্ডারে পরিবর্তিত হওয়া উচিত, বা কমপক্ষে আমি এটি ভেবেছিলাম: দুর্ভাগ্যক্রমে, এটি ছিল না। সুতরাং আমি অ্যাপ্লিকেশনটি আইএমএসস্পারকে অন্য জায়গায় সরিয়ে নিয়েছি (আমি আমার ডেস্কটপে একটি অস্থায়ী ফোল্ডার তৈরি করেছি, এটি সেখানে সরিয়ে নিয়ে আমার ডেস্কটপে ফিরে এসেছি)। এটি ফাইন্ডারে আইকন তথ্য সতেজ করে:

এখানে চিত্র বর্ণনা লিখুন

এখন একটি .itmsp ফাইলটিতে ডাবল ক্লিক করুন এবং এটি ফোল্ডার হিসাবে খোলা দেখুন:

এখানে চিত্র বর্ণনা লিখুন


এটি অত্যন্ত চিত্তাকর্ষক ... তবে এটি একটি নিগল ইস্যু বলে মনে হচ্ছে: যদি সন্ধানকারীটি কলাম ভিউতে থাকে (আমার পছন্দসই দৃশ্যের ধরণ), .itmspফোল্ডারের মধ্যে থাকা কোনও কিছুই অদৃশ্য। আমি কেন বাছাই করতে পারি না, তবে এটি আছে। তদ্ব্যতীত, আমার যদি আমার ড্রথার থাকে তবে আপনাকে ভিতরে দেখতে ফাইলটি ডাবল-ক্লিক করতে হবে না, তবে ওহ ভাল।
মাইক্রোমাইকেল

1
তুমি ঠিক. আপনি কলাম ভিউটি ব্যবহার করেছেন এমন প্রত্যাশা আমি করি নি, যদিও আমি অবশ্যই বলতে পারি যে এটি হাজার হাজার .itmsp ফোল্ডারগুলির সাথে লেনদেন করার সময় এটি সঠিকভাবে উপলব্ধি করে। তবে আমি সমস্যাটি সমাধান করার একটি উপায় খুঁজে পেয়েছি, এটি ফাইন্ডারটিকে .itmsp ফোল্ডারগুলি ফোল্ডার হিসাবে বিবেচনা করতে বাধ্য করুন। আমার সম্পাদনাটি একবার দেখুন (অথবা সমাধান নামক শেষ অনুচ্ছেদে সরাসরি লাফিয়ে পড়ুন, তবে কৌতুক অনুচ্ছেদে বর্ণিত হিসাবে প্রথমে @SpOpener এর তথ্য.প্লেস্টটি সংশোধন করতে ভুলবেন না))
জৌমে

অবিশ্বাস্য! উত্তরের জন্য ধন্যবাদ. এটি এমন কিছু জিনিসের খুব আকর্ষণীয় চেহারা যা ফাইন্ডার এবং ওএস এক্সটিকে টিক করে তোলে।
মাইক্রোমাইকেল 23

ধন্যবাদ, আমি আপনাকে এটি দরকারী বলে খুশি! (আমি পাঠ্যতা উন্নত করতে এবং আরও কাঠামো দেওয়ার জন্য উত্তরটি পরে সম্পাদনা করব))
জুমে

উত্তরটি সম্পাদনা করার জন্য আমি অবশেষে কিছু সময় পেলাম। আমি অনুচ্ছেদগুলি পুনরায় সাজিয়েছি এবং প্রমাণ যুক্ত করেছি যে আমার উত্তরে বর্ণিত সমাধানটি আইটিউনস আপডেটগুলির প্রতিরোধক।
jaume

7

একটি বিকল্প lsregister -u /Applications/Xcode.app/Contents/Applications/Application\ Loader.app/হ'ল অ্যাপ্লিকেশন লোডারটির সাথে নিবন্ধন করা হবে, তবে এটি চালু হলে এটি পুনরায় নিবন্ধভুক্ত করা হবে, যদি লঞ্চ পরিষেবাদি ডাটাবেসটি পুনরায় তৈরি করা হয়, অথবা সম্ভবত এক্সকোড আপডেট করা থাকে।

আপনি সিএফবান্ডেলডোকামেন্টটাইপস এবং ইউটিই এক্সপোর্টড টাইপডিস্ল্যাকশনার অভিধানে /Applications/Xcode.app/Contents/Applications/Application Loader.app/Contents/Info.plistএবং চালাতে এন্ট্রিগুলি সম্পর্কেও মন্তব্য করতে পারেন lsregister -f /Applications/Xcode.app/Contents/Applications/Utilities/Application\ Loader.app/। এটি এক্সকোডের কোড স্বাক্ষরকে অকার্যকর করে না, তবে পরিবর্তনগুলি আপডেটগুলি ওভাররাইট হয়ে যেতে পারে।

তালিকাভুক্তির পুরো পথটি /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister10.5 এবং তার পরে রয়েছে।


আপনি কি নিশ্চিত যে অ্যাপ্লিকেশনটি পরিবর্তন করার পরে Info.plistনিবন্ধভুক্ত করা আপনার প্লাস্টিক থেকে সরানো ফাইল ধরণের নিবন্ধন করবে? আমি এটি কার্যকরভাবে কল্পনা করতে পারি এবং আমি সহজেই এটি ব্যর্থতার কল্পনা করতে পারি। খুব।
ওল্ড প্রো

@ ওल्डপ্রো হ্যাঁ, lsregister -u $app && lsregister $appঅন্তত এক্ষেত্রে কোনও তথ্য.প্লেস্টে পরিবর্তনগুলি প্রয়োগ করা হবে বলে মনে হয়।
ল্রি

এটি একটি চমত্কার উত্তর - মনে রাখবেন যে পরের বার আপনি এক্সকোড আপগ্রেড করবেন - আপনি কোনও অ্যাপ্লিকেশন লোডার দিয়ে শেষ করতে পারেন যা ডিফল্টটিকে রেজিস্টার করে CFBundleDocumentTypesযাতে আপনি "সরঞ্জাম" মুছতে পারেন যখন আপনার প্রয়োজন না হলে এটি উপস্থিত হবে এবং / বা এটি পরিবর্তন করার ক্লান্ত।
বিমিক

2

এখানে বান্ডিল সম্পর্কে অ্যাপলের ডকুমেন্টেশন থেকে একটি প্রাসঙ্গিক অংশ ( জোর দেওয়া যুক্ত )

সিস্টেম কীভাবে বান্ডিল এবং প্যাকেজগুলি সনাক্ত করে

নিম্নলিখিত শর্তগুলি সত্য হলে সন্ধানকারী ডিরেক্টরিটিকে একটি প্যাকেজ হিসাবে বিবেচনা করে:

  • ডিরেক্টরিটিতে একটি ज्ञात ফাইল নাম এক্সটেনশন রয়েছে: .app, .bundle, .framework, .plugin, .kext, এবং আরও অনেক কিছু।
  • ডিরেক্টরিটিতে একটি এক্সটেনশান রয়েছে যা অন্য কিছু অ্যাপ্লিকেশন দাবি প্যাকেজের ধরণের প্রতিনিধিত্ব করে; " নথি প্যাকেজগুলি " দেখুন ।
  • ডিরেক্টরিটির প্যাকেজ বিট সেট রয়েছে।

প্যাকেজ নির্দিষ্ট করার পছন্দের উপায়টি হল প্যাকেজ ডিরেক্টরিটি একটি পরিচিত ফাইল নাম এক্সটেনশন দেওয়া। বেশিরভাগ অংশে, এক্সকোড সঠিক এক্সটেনশন প্রয়োগ করে এমন টেম্পলেট সরবরাহ করে আপনার জন্য এটি যত্ন করে। আপনাকে যা করতে হবে তা হ'ল উপযুক্ত ধরণের একটি এক্সকোড প্রকল্প তৈরি করা।

ডকুমেন্ট প্যাকেজগুলিতে.itmsp বর্ণিত প্রায় অবশ্যই এক্সকোড এটি উপস্থাপন করছে যে এটি দাবি করে যে একটি প্যাকেজ প্রকারের প্রতিনিধিত্ব করে । সুতরাং সম্ভবত এক্সকোড থেকে সেই সম্প্রসারণটি সরিয়ে ফেলা কৌশলটি কার্যকর করবে তবে আমি সন্দেহ করি যে একবার এই সংস্থাটি ফাইন্ডার দ্বারা চিহ্নিত করা হয়েছিল, এটি এক্সকোড থেকে অপসারণ করলে তা পূর্বাবস্থায় ফিরে আসবে না। "ওপেন উইথ ..." -তে ডান ক্লিক করলে আপনি "প্রস্তাবিত অ্যাপ্লিকেশনগুলি" কী কী পান? আপনাকে তাদের সমস্ত তথ্য.প্লিস্টগুলি পরীক্ষা করতে হবে। Info.plist

আমি আপনি ব্যবহার পার পেয়ে যাবে এইজন্য করার পরামর্শ দিই lsregister -uকোনো অ্যাপ্লিকেশানে যে দাবি অনিবন্ধীকৃত করতে .itmsp। অন্যথায় আপনাকে .itmspসমস্ত প্লাস্টার থেকে অপসারণ করতে হবে এবং তারপরে পুরো ফাইন্ডার অ্যাসোসিয়েশন ডাটাবেসটি ব্যবহার করে হত্যা করতে হবে lsregister -kill -seed। এটি কখনই করেনি, এটি আপনার সিস্টেমে বাকি অংশকে কতটা ক্ষতি করবে তা বলার অপেক্ষা রাখে না। সম্ভবত আপনি নিবন্ধভুক্ত করতে চান, তারপরে প্লিস্টগুলি সম্পাদনা করুন, তারপরে হত্যা এবং ডাটাবেসটি পুনরায় অনুসন্ধান করুন। আপনি যদি ইতিমধ্যে প্লাস্টিকটি থেকে সরিয়ে ফেলেছেন তবে নিবন্ধভুক্ত সমিতিটি মুছে না ফেললে আমাকে অবাক করে দেবে না এবং আপনি যদি এটি এখনও অপসারণ না করেন তবে পুনরায় এটি যুক্ত করে দেবে। প্লাস এইভাবে আপনি আপত্তিজনক অ্যাপ্লিকেশনগুলির জন্য অন্য সমস্ত সমিতি হারাবেন না।

সবচেয়ে খারাপ কী, এক্সকোড যেতে পারত এবং সমস্ত ফোল্ডারে বান্ডিল বিট সেট করতে পারে। আমি তারপর আপনি ব্যবহার করে একটি স্ক্রিপ্ট লিখতে চাই GetFileInfoএবং SetFileডিস্কে স্ক্যান এবং যারা, একটি ব্যথা ধরনের যা পূর্বাবস্থা কিন্তু doable করতে। আঙুলগুলি বান্ডিল বিটগুলি অস্থির থাকা থেকে পেরিয়ে গেছে। GetFileInfoকয়েকটি পরীক্ষা করে চেক করতে ব্যবহার করুন ।


0

আমি বিশ্বাস করি আপনি এটি ব্যবহার করে এটি ঠিক করতে পারেন

/usr/bin/SetFile -a B /path/to/file.itmsp

আপনি অন্যদের সবার জন্য চেষ্টা করার আগে অবশ্যই এটি পরীক্ষা করুন one

আপনার যদি প্রয়োজন হয় তবে একটি নির্দিষ্ট ফোল্ডারে তাদের সকলের উপর চলতে হবে:

find . -name \*.itmsp -exec /usr/bin/SetFile -a B {} \;

এটা তোমার জন্য করা উচিত।


1
SetFile -a B বান্ডিল বিট সেট করে। আসলে, এটি অক্ষম হওয়া উচিত: SetFile -a bHas bundleবিট সেট না হওয়ার পরে এটির কোনও প্রভাব পড়বে না: GetFileInfo -ab foo.itmspরিটার্ন 0
jaume
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.