I am working on developing a Mac app (WireGuard Apple VPN) that will be distributed outside the App Store.
I have added the network extension which is included in the system extension with packet tunneling capability.
I have created a build following these steps here: https://developer.apple.com/forums/thread/737894
as per your suggestions in my accepted post: https://developer.apple.com/forums/thread/761251
It works fine in this case when the machine has SIP disabled and systemextensionsctl developer enabled.
As soon as I have made changes on the machine to disable systemextensionsctl developer and enable SIP, it loads the system extension and also asks for network extension permission. But it does not connect to the VPN.
I have copied the app to the "/Applications" directory before opening it.
This issue is specific to macOS 15.1. It works fine for macOS 14.* and 13.*. Speaking of macOS 15.0, it didn't work in both cases with SIP enabled or disabled. So, it seems that it must be a bug in macOS 15.0 and it seems that this bug was partially fixed in macOS 15.1. Is that right?
I am currently planning to distribute the app to testers for final testing before rolling it out to a wider audience.
Am I missing something? Thanks in advance.
But in case of macOS 15.1, it works if SIP is disabled and not if SIP is enabled. macOS 15.0 did not work in either case.
Yeah, I don’t have a ready explanation for that. But I wanna make sure you’re on the right path before I dig into it.
Yes, we are using a Developer ID signed extension.
OK. Then are you going through this process to test what your users will see? Or are you doing this during development?
I ask because:
-
To test what you’re using will see, you have to notarise the app. In Testing a Notarised Product I discuss the process I use for this sort of test.
-
If you’re doing this during development, I recommend that you switch to Apple Development signing. I explain why in The Care and Feeding of Developer ID.
Regarding step 5, were you able to see add a ‘first light’ log point to your provider’s initialiser? If so, did you see it?
Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"