Post

Replies

Boosts

Views

Activity

Reply to Migrating from pkg installer to Service Management
I'm struggling to understand expectations on happy path and posting here for others in case they wonder. I have no sand boxed apps I create valid/signed/notarized MyTest.pkg with a post install script Distribute the package to end users They install it sudo installer -verbose -pkg MyTest.pkg -target / will install my new app End user runs the new app, which calls /Applications/MyTest.app/Contents/MacOS/MyTest register We get Operation not permitted This will also add an entry on the System Settings -> General - > Open at Login or ask the user to enable this item on right corner user notifications. Since we failed on 5, we call /Applications/MyTest.app/Contents/MacOS/MyTest status We get SMAppServiceStatus.SMAppServiceStatusRequiresApproval Now our app asks the user to allow our item that was magically added on the step 7 We are good to go and can now call our elevated privileged app or XPC. After a lot of fiddling with this new API, this seems to be making sense. Apple does not want us to do all this and not give the end user a final say. After all this work DO I still have to ask the end user to allow full disc access ?
Sep ’24
Reply to SMAppService.daemon as root
This did not answer the original question on how to run a system daemon (or a root daemon). As to That post creates an agent, but the setup for a daemon is very similar these comments are debatable. Provide an example of SMAppService.daemon(plistName:) and let us decide if it's easy.
Aug ’24
Reply to Migrating from pkg installer to Service Management
Amazing. I wanted to upgrade my privileged helper form SMJobBless to SMAppService.daemon. Read the existing code from UpdatingYourAppPackageInstallerToUseTheNewServiceManagementAPI, ok it was nice and simple. Well I wanted to do a bit more, after all apple tells me SMJobBless is deprecated and I should look into the SMAppService class So I made this change class func register() { let service = SMAppService.daemon(plistName: "com.xpc.example.agent.plist") do { try service.register() print("Successfully registered \(service)") } catch { print("Unable to register \(error)") exit(1) } } Made sure to have the plist under $APP.app/Contents/Library/LaunchDaemons/com.xpc.example.agent.plist Boom, I immediately hit the wall. Apple sends me a not so useful error Unable to register Error Domain=SMAppServiceErrorDomain Code=3 "No such process" UserInfo={NSLocalizedFailureReason=No such process} Common guys, instead of riddles, give us better examples, more examples, that cover more than 1% of the functionality.
Aug ’24
Reply to How to access files when running XCTests in Ventura. Currently I receive "unauthorised access" errors.
No issues with official Xcode ie: 14.3.1, but FDA issues when running Xcode 15 Beta 5 ... As I'm falling in love with SPMs, I tend to write tests right in the SPM package. These tests will run inprocess of /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Xcode/Agents/xctest. Just put a break point in your testXXX() and po Bundle.main.executablePath to verify. Adding Xcode 15 Beta 5 to FDA did nothing, where Xcode 14.3.1 is not even on the FDA list. Went back to 14.3.1 and my tests do work again. Peace.
Aug ’23
Reply to A bug in Xcode lldb debugger for swift
For me the code is in the app. (lldb) po rv error: expression failed to parse: error: <EXPR>:3:1: error: cannot find 'rv' in scope rv ^~ (lldb) fr v rv (WhatSize.SideBarItemReducer.State) rv = <variable not available> // the code I'm trying to debug let rv = SideBarItemReducer.State.init(item: item) .preserveUIState(sideBarItemState) return rv What's not so funny is that rv has the proper data in the Variables View, but I love command line short cuts. Not a show stopper but a huge annoyance. Xcode 14.3.1 (14E300c) Thanks.
Jul ’23