I managed to find a few things that helped me. By default, a toolbar item is not added to the search box unless the user drags it. I could not find a way to programmatically add an item to the search box toolbar.
Add item to search bar
// Create a reference to the shared file list. LSSharedFileListRef favoriteItems = LSSharedFileListCreate(NULL, kLSSharedFileListFavoriteItems, NULL); // Check Items if (favoriteItems) { // Get CFURL for Application CFURLRef url = (__bridge CFURLRef)[NSURL fileURLWithPath:path]; // Add Item LSSharedFileListItemRef item = LSSharedFileListInsertItemURL(favoriteItems, kLSSharedFileListItemBeforeFirst, NULL, NULL, url, NULL, NULL); // Release if (item) CFRelease(item); } // Release if (favoriteItems != NULL) CFRelease(favoriteItems);
Code to remove an item from the sidebar
// Create a reference to the shared file list. LSSharedFileListRef favoriteItems = LSSharedFileListCreate(NULL, kLSSharedFileListFavoriteItems, NULL); // Check Items if (favoriteItems) { // Get Login Items CFArrayRef favoriteItemsArray = LSSharedFileListCopySnapshot(favoriteItems, NULL); // Loop Through Items for (id item in (__bridge NSArray *)favoriteItemsArray) { // Get Item Ref LSSharedFileListItemRef itemRef = (__bridge LSSharedFileListItemRef)item; // Get Item URL CFURLRef itemURL = LSSharedFileListItemCopyResolvedURL(itemRef, kLSSharedFileListNoUserInteraction | kLSSharedFileListDoNotMountVolumes, NULL); if (itemURL != NULL) { // If Item Matches Remove It if ([[(__bridge NSURL *)itemURL path] hasPrefix:path]) LSSharedFileListItemRemove(favoriteItems, itemRef); // Release if (itemURL != NULL) CFRelease(itemURL); } } // Release if (favoriteItemsArray != NULL) CFRelease(favoriteItemsArray); } // Release if (favoriteItems != NULL) CFRelease(favoriteItems);
Update directory in Finder
// Reload Finder (change the word directory to file if updating file) NSAppleScript * update = [[NSAppleScript alloc] initWithSource:[NSString stringWithFormat:@"tell application \"Finder\" to update POSIX directory \"%@\"",path]]; [update executeAndReturnError:nil];
Code to enable the extension (package identifier)
system("pluginkit -e use -i com.mycompany.finderExt")
Code to disable the extension (package identifier)
system("pluginkit -e ignore -i com.mycompany.finderExt")