Post

Replies

Boosts

Views

Activity

File Provider Delete Enumerated Folders
I am developing a file provider extension on Mac. I noticed when attempting to delete an enumerated folder with didDeleteItems, passing only the top-level folder's ID is not enough to delete the item. It seems we need to pass all items underneath as well to this function for the folder to be removed. Is there a way around this? The way our application is designed makes it challenging to do this and we would prefer being able to remove the folder by utilizing the item ID only. If not, how could we obtain the particular items underneath that should be passed in to the function?
2
0
321
Aug ’24
File Provider Extension Fails to Launch but Still Appears on Side Bar
I am developing a Mac File Provider Extension. When testing installation from-scratch, The File Provider Name does appear on the side bar. However, the text '[App Name] encountered an unexpected error. Items may be out of date .....Try Again' appears at the top of the Finder window when opening the File Provider's Domain. Along with this text, there is a persistent 'Loading...' that is displayed in the middle of the Finder view. The File Provider seems to immediately get in a bad state. This does not happen at all during development. I am also noticing some logs in console that indicate some sort of issue. These 3 seem to be relevant. Any ideas or insight what could be going on? create-item(propagated:<root dbver:0 domver:<nil>>) why:itemChangedRemotely|diskImport sched:default.1717009685.233681#1717009069.3164978 error:<NSError: Cocoa 4101 "Couldn’t communicate with a helper application." Underlying={NSError: NSFileProviderInternalErrorDomain 7 "A connection to the extension “REMOVED ID” could not be made." Underlying={NSError: com.apple.extensionKit.errorDomain 2 "The operation couldn’t be completed. (com.apple.extensionKit.errorDomain error 2.)" UserInfo={(omitted)}}}}}>> → <requested:<p:root n:"i{31}e" dir child:0 m:rwxS ct:1717009068.969699 mt:1717009068.969699>> [duration 33ms44µs] Failed to create extensionProcess for extension 'REMOVED ID' error: Error Domain=com.apple.extensionKit.errorDomain Code=2 "(null)" UserInfo={NSUnderlyingError=0x7fa0ce9d28b0 {Error Domain=com.apple.extensionKit.errorDomain Code=2 "(null)" UserInfo={NSUnderlyingError=0x7fa0ce9d2ad0 {Error Domain=RBSRequestErrorDomain Code=5 "Launch failed." UserInfo={NSLocalizedFailureReason=Launch failed., NSUnderlyingError=0x7fa0ce9d33e0 {Error Domain=NSPOSIXErrorDomain Code=111 "Unknown error: 111" UserInfo=0x7fa0ce9d2900 (not displayed)}}}}}} Launch failed with error: Error Domain=com.apple.extensionKit.errorDomain Code=2 "(null)" UserInfo={NSUnderlyingError=0x7fa0ce9d2ad0 {Error Domain=RBSRequestErrorDomain Code=5 "Launch failed." UserInfo={NSLocalizedFailureReason=Launch failed., NSUnderlyingError=0x7fa0ce9d33e0 {Error Domain=NSPOSIXErrorDomain Code=111 "Unknown error: 111" UserInfo={NSLocalizedDescription=Launchd job spawn failed}}}}}
1
0
588
May ’24
How to immediately cause eviction for Item upon creation?
I am developing a FileProvider extension on Mac. I was wondering what the most reliable way to evict a document as soon as possible after createItem is called for the respective item. Our use-case for this is as follows: Users can 'bulk-import' items into a FileProvider folder, and we want our application to immediately evict the item as soon as possible once the item's content is uploaded to the server. This is to save space on the user's machine. So, what is the best way to accomplish immediate eviction after item creation? I've tried calling evictItem from within the createItem function itself, but that yields many errors and can cause slowness.
3
0
601
May ’24
'iCloud' displayed when File Provider Item is marked as 'Shared'
I am developing a File Provider on Mac. I am marking some items within the domain as 'shared' via the NSFileProviderItemProtocol. However, the text 'Folder shared on iCloud by me' appears in Finder when these items are marked as shared. Is this correct? My provider has nothing to do with iCloud, which is, of course, the cloud developed by Apple. Is there a way to change this text or remove it? I've attached an image that shows the problem.
1
0
573
May ’24
Extended Attributes in File Provider Extension
I am developing a File Provider Extension on Mac. I am confused about how the extendedAttributes property works. The property never seems to be populated with any extended attributes. I've tried setting some custom extended attributes on my documents in testing, but they are never populated in the itemTemplates that are produced in the extension. The dictionary that would hold the extended attributes always is empty. I began to think that it only supported Mac-created attributes such as com.apple.quarantine. I then tried importing some files that are 'quarantined' with this appropriate extended attribute but still have not seen this data appear in my extension either. Any clarity here with what I should be expecting or what I should try would be helpful.
1
0
707
May ’24
Still being asked to allow keychain access even when allowing all applications to access item.
During our build process for our mac exe, there is a point where we run our newly built executable as a test. This executable tries to access the login keychain as part of our test. On the particular keychain item it is trying to access, we have selected to "Allow all applications to access this item". Even with this enabled, every new build and run of this exe is prompting that we "Allow Access" for this exe to access the keychain item. This requires manual intervention for each new build to continue running. Any ideas as to what we can do to stop the prompting? We can avoid accessing the keychain during this test process, but I'd rather not remove testing that we have been doing for a years. For background, this started a few weeks ago and was not a problem until recently. We also don't do any code signing of the exe in this process.
0
0
378
Mar ’23
Programmatically Change Default Application to Open a File With
Finder allows the user to manually change the default 'Open With' application for a file by going to 'Get Info'. Is there a way to programmatically do this, for example, with AppleScript, in order to change the default 'Open With' application of specific files? My use-case is changing default 'Open With' application for files that are in a certain directory. I prefer the user doesn't have to do this manually.
2
0
913
May ’22
Failure on Notarization of PKG installer for Mac Application
We have a Mac App build with Pyinstaller. We can successfully sign and notarize the .app file itself with no issue. However, when building a PKG as an installer around this .app file, we get a notarization error that the signature of the binary is invalid. The binary that it complains about is the main exe of the .app file. This is confusing, because this was not happening when signing the .app file by itself. Our Release Team uses PackagesBuild to build the pkg. Any suggestions on what the problem could be? Here is the notarization log from the PKG: { &#9;"logFormatVersion": 1, &#9;"jobId": "c029134f-c0be-49ea-9e72-c297eb76f20c", &#9;"status": "Invalid", &#9;"statusSummary": "Archive contains critical validation errors", &#9;"statusCode": 4000, &#9;"archiveFilename": "pkg.zip", &#9;"uploadDate": "2020-10-26T22:26:51Z", &#9;"sha256": "b38799231a4cacf88fe835f167616a16aee2df1ecd7010dcf82165b97082e619", &#9;"ticketContents": null, &#9;"issues": [ &#9;&#9;{ &#9;&#9;&#9;"severity": "error", &#9;&#9;&#9;"code": null, &#9;&#9;&#9;"path": "pkg.zip/Release/installer.pkg/installer.pkg Contents/Payload/Applications/iManage/mainApp.app/Contents/MacOS/main_exe", &#9;&#9;&#9;"message": "The signature of the binary is invalid.", &#9;&#9;&#9;"docUrl": null, &#9;&#9;&#9;"architecture": "x86_64" &#9;&#9;} &#9;] }
2
0
1.1k
Oct ’20
Sysextd failing to install System Extension (Endpoint Security)
Hi, we have been granted our Endpoint Security, System Extension entitlement and are now building/signing with our newly created provisioning profile, which includes this entitlement along with a Developer ID cert. When trying to run the app containing the System Extension on a machine with SIP enabled, the System Extension does not load. The only output that we can see in console.app comes from sysextd log messages below: Here is what we see, we replaced our IDs with dummy IDs: sysextd: sysextd: staging extension with identifier com.system.extension.ID sysextd: MacOS error: 3 sysextd: Error checking with notarization daemon: 3 sysextd: bundle code signature is not valid - does not satisfy requirement: -67050 code failed to satisfy specified code requirement(s) sysextd: finished uninstalling extension com.system.extension.ID sysextd: waiting for external validation of extension with identifier com.system.extension.ID The OS we are trying to run this on is version 10.15.5. Is this because we haven't notorized the application? We are able to run everything without SIP enabled on our VM (Catalina 10.15.5) Please let me know anything else I can provide to help solve this. I don't see much else though int the logs.
1
0
1.3k
Sep ’20
Passing arguments to System Extension from the App Delegate
Hello, I am creating a system extension and bundling it in an app. I have had success building the app and requesting activation of the extension from my application delegate (Swift). My question is that I need to somehow pass additional arguments from the app delegate that requests activation of the extension to the main function of my system extension. Specifically, I am trying to pass the username of the user that ran the application. Is there a way to pass additional arguments from the delegate to the extension? I cannot get the current user from within the system extension because the extension runs as root, always. So the fetching the current user will return root. Relevent code from my app delegate that requests activation: func applicationDidFinishLaunching(_ aNotification: Notification) {         let ID = "com...."     let req = OSSystemExtensionRequest &#9;.activationRequest(forExtensionWithIdentifier: ID, &#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9; queue: DispatchQueue.main).&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9; request.delegate = self     /*some how pass arguments to extension*/ OSSystemExtensionManager &#9;.shared.extensionManager.submitRequest(req) &#9;&#9;&#9; } C/C++ code to start my System Extension: int main(int argc, const char* argv[]){     //start.....extension //Need to receive arguments here dispatch_main(); }
1
0
597
Jun ’20