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.
Post not yet marked as solved
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.
Post not yet marked as solved
I am currently monitoring ES_EVENT_TYPE_AUTH_CLONE events in my Endpoint Security client, but it seems to only respond to file, not folder, copies from finder. Is there any existing event to allow notification of a copy of a folder in finder? If not, are there any future plans to include such an event in the ES event list?
Thank you.
Post not yet marked as solved
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.
Post not yet marked as solved
Is there a programmatic way to show/enable Comments Tab from Swift?
I currently have an app with a Finder Sync Extension displaying badges on Finder items.
I am so open to any other programmatic suggestion such as Apple Script.
Thank you.
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:
{
	"logFormatVersion": 1,
	"jobId": "c029134f-c0be-49ea-9e72-c297eb76f20c",
	"status": "Invalid",
	"statusSummary": "Archive contains critical validation errors",
	"statusCode": 4000,
	"archiveFilename": "pkg.zip",
	"uploadDate": "2020-10-26T22:26:51Z",
	"sha256": "b38799231a4cacf88fe835f167616a16aee2df1ecd7010dcf82165b97082e619",
	"ticketContents": null,
	"issues": [
		{
			"severity": "error",
			"code": null,
			"path": "pkg.zip/Release/installer.pkg/installer.pkg Contents/Payload/Applications/iManage/mainApp.app/Contents/MacOS/main_exe",
			"message": "The signature of the binary is invalid.",
			"docUrl": null,
			"architecture": "x86_64"
		}
	]
}
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.
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
	.activationRequest(forExtensionWithIdentifier: ID,
										 queue: DispatchQueue.main).										
request.delegate = self
/*some how pass arguments to extension*/
OSSystemExtensionManager
	.shared.extensionManager.submitRequest(req) 			
}
C/C++ code to start my System Extension:
int main(int argc, const char* argv[]){
//start.....extension
//Need to receive arguments here
dispatch_main();
}