4D Blog

Home Product Enhancing macOS Privacy and Security with Application UUID

Enhancing macOS Privacy and Security with Application UUID

April 25, 2025

Product

With the Sequoia update, macOS now relies on the UUID of applications for various privacy and security controls, such as network access. This new feature of macOS could cause issues on the end-user side, such as having to often re-authorize the built 4D applications. To address this, starting from 4D 20 R9, each 4D application built for macOS now has its own application UUID. This change ensures better-tuned access controls. Let’s delve into the details.

macOS Sequoia and application UUIDs

With the introduction of the Sequoia version, macOS now bases some privacy and security settings on application UUIDs instead of their names. Then, if multiple applications share the same UUID, it can cause issues in system controls. This is particularly relevant for Local Network access, as explained in this technical note. The involved settings are located in the System Settings dialog, under the Local Network panel of the Privacy & Security item:

Unique Application UUIDs

Prior to 4D 20 R9, built 4D applications shared the same UUID as the 4D Volume Desktop or 4D Server application used as the source.

Now, when building an application, its UUID is automatically set using a combination of the source 4D application and your application identifier. This ensures that your application is considered unique on macOS systems and maintains the same UUID for your application as long as you use the same version of the 4D source application.

Of course, this new behavior is also applied to the Build4D component!

Good news, nothing you need to do, nothing needs to be changed in your build chain, all goes fully automatic. Usually you can stop reading here, but if you need, we provide full control of the UUID! This is explained in the following paragraph.

Updated Functions

To support this new feature, we’ve updated the File.getAppInfo() function to return the application UUID when applied to the application executable. Here’s a sample code snippet:

var $app:=File("/Applications/myApp.app/Contents/MacOS/myApp")
var $info:=$app.getAppInfo()

And here is a sample result:

{
  "archs": [
    {
      "type": 16777223,
      "name": "x86_64",
      "uuid": "9C286FBFFAAA242FEBF462654C950ECF"
    },
    {
      "type": 16777228,
      "name": "arm64",
      "uuid": "8D8AA28824AACC558AB3D287A43EC53A"
    }
  ]
}

Additionally, the File.setAppInfo() function has been enhanced to allow you to define your own UUID if desired. Here’s how you can do it:

var $app:=File("/Applications/myApp.app/Contents/MacOS/myApp")
var $info:=$app.getAppInfo()
 
// regenerate uuids for all architectures
For each ($arch; $info.archs)
  $arch.uuid:=Generate UUID
End for each
 
// update the app with the new uuids
$app.setAppInfo($info)

We hope this feature will enhance the user experience with your deployed applications, ensuring they are unique and better-integrated within macOS environments.

Happy coding!

Discuss

Tags 20 R9, 21, Build application, Build4D

Latest related posts

  • April 29, 2025

    Discover your AI-powered writing assistant in 4D Write Pro

  • April 28, 2025

    Unlock the Power of AI with 4D AIKit: Automate, Create, and Innovate

  • April 25, 2025

    Formulas in Label Wizard

Avatar
Damien Fuzeau
• Product Owner •Damien Fuzeau has joined the 4D Product team in February 2019. As a Product Owner, he is in charge of writing user stories, then translating them to functional specifications. His job also entails making sure that the feature implementations delivered are meeting the customer needs.Damien is graduated from the University of Nantes in software engineering. He spent more than 23 years in its former company, first as developer (discovering 4D in 1997), and later as engineering manager and software architect. This company is a 4D OEM partner and deployed 4D based business softwares for thousands users, on hundreds servers. So, Damien is used to 4D development and deployment in a multi-language context.
  • Deutsch
  • Français
  • English
  • Português
  • Čeština
  • Español
  • Italiano
  • 日本語

Categories

Browse categories

  • 4D View Pro
  • 4D Write Pro
  • 4D for Mobile
  • Email
  • Development Mode
  • 4D Language
  • ORDA
  • User Interface / GUI
  • Qodly Studio
  • Server
  • Maintenance
  • Deployment
  • 4D Tutorials
  • Generic
  • 4D Summit sessions and other online videos

Tags

4D-Analyzer 4D for Android 4D for iOS 4D NetKit 4D Qodly Pro 4D View Pro 4D Write Pro 20 R8 20 R9 Administration Authentication Build application CI/CD Class Client/Server Code editor Collections Compatibility settings Formula Google Listbox Logs Mail Network Objects ORDA PDF Pictures Preemptive Programming Qodly Studio REST Scalability Security Session Source control Speed Spreadsheet Tutorial UI User Experience v20 vscode Web Word processor

Tags

4D-Analyzer 4D for Android 4D for iOS 4D NetKit 4D Qodly Pro 4D View Pro 4D Write Pro 20 R8 20 R9 Administration Authentication Build application CI/CD Class Client/Server Code editor Collections Compatibility settings Formula Google Listbox Logs Mail Network Objects ORDA PDF Pictures Preemptive Programming Qodly Studio REST Scalability Security Session Source control Speed Spreadsheet Tutorial UI User Experience v20 vscode Web Word processor
Subscribe to 4D Newsletter

© 2025 4D SAS - All rights reserved
Terms & Conditions | Legal Notices | Data Policy | Cookie Policy | Contact us | Write for us


Subscribe to 4D Newsletter

* Your privacy is very important to us. Please click here to view our Policy

Contact us

Got a question, suggestion or just want to get in touch with the 4D bloggers? Drop us a line!

* Your privacy is very important to us. Please click here to view our Policy