Skip to content
This repository was archived by the owner on Dec 6, 2025. It is now read-only.

Conversation

@roop
Copy link
Collaborator

@roop roop commented Jan 30, 2023

This PR creates additional targets (with "-DeveloperID" suffix) that can be used for Developer ID Distribution of the macOS app (for distribution outside of the Mac App Store).

The tunnel extension is bundled as a system extension. The system extension is attempted to be installed at app launch -- there will be prompts at app launch for that.

Differences from the App Store version:

  • The privacy statement is not shown at app launch. It can still be accessed from the app's Settings pane.
  • There's no unified log. On clicking "View Log", we show how the user can access the log using Console.app or "log" commands. This is because with the System Extension, we have no shared location to keep the debug.log file that can be shared between the app and the extension (the app and the extension run as different users and don't have permissions to see each other's files).
  • The password for imported OpenVPN config files is passed directly and not through the Keychain. This is because with the System Extension, we have no shared keychain to share the password with.
  • The About pane says "Developer ID Version"

Creating the Developer ID Distribution is somewhat complex, and is documented in DEVELOPER_ID.md which is part of this PR.

@roop roop marked this pull request as draft January 30, 2023 07:05
@roop
Copy link
Collaborator Author

roop commented Jan 30, 2023

Converted to draft because this depends on #498, which is not merged yet.

@roop roop marked this pull request as ready for review February 9, 2023 13:00
@roop
Copy link
Collaborator Author

roop commented Feb 9, 2023

Rebased to master after merging of #498.

@efef Please take a look at DEVELOPER_ID.md (added in this PR), which documents the distribution process.

roop added 23 commits February 15, 2023 20:05
We set it up in Xcode and then edit the project file to updates paths and
names.
We set it up in Xcode and then edit the project file to remove references to
the expanded APP_ID
Because when building for Developer ID release, we need to use the
entitlement values with a "-systemextension" suffix.
For the "-macOS-DeveloperID" targets (app, tunnel, and loginitemhelper), for
release configuration, under Build Settings:

 - Change "Code Signing Style" to "Manual"
 - Change "Code Signing Identity" to "Developer ID Application"
roop added 14 commits February 15, 2023 20:05
To help create the macOS installer package for a Developer ID release.
-TunnelExtension and -LoginItemHelper xcconfigs were just duplicates.
We don't have a shared location between the app and the system
extension to write the log, so we instead rely on the OS-provided
unified logging.

So when the user clicks on "View Log", we show a view that shows
how to access the log using Console.app or log show.
In case of an App Extension, there's a shared Keychain we
can use to pass the password through.

In case of a System Extension, we don't have a shared
Keychain, so we just pass it directly.
@roop roop force-pushed the sysext branch 2 times, most recently from 75d5bf1 to 0f320fd Compare February 16, 2023 04:35
@roop
Copy link
Collaborator Author

roop commented Feb 16, 2023

Pushed 0f320fd to developer_id_distribution branch, so that @efef can try it out.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant