Con l’aggiornamento Sequoia, macOS si basa ora sull’UUID delle applicazioni per vari controlli di privacy e sicurezza, come l’accesso alla rete. Questa nuova caratteristica di macOS potrebbe causare problemi agli utenti finali, come la necessità di riautorizzare spesso le applicazioni 4D create. Per risolvere questo problema, a partire da 4D 20 R9, ogni applicazione 4D creata per macOS ha ora un proprio UUID dell’applicazione. Questa modifica garantisce controlli di accesso meglio calibrati. Approfondiamo i dettagli.
macOS Sequoia e gli UUID delle applicazioni
Con l’introduzione della versione Sequoia, macOS basa ora alcune impostazioni di privacy e sicurezza sugli UUID delle applicazioni anziché sui loro nomi. Se più applicazioni condividono lo stesso UUID, ciò può causare problemi nei controlli di sistema. Ciò è particolarmente rilevante per l’accesso alla Rete locale, come spiegato in questa nota tecnica. Le impostazioni in questione si trovano nella finestra di dialogo Impostazioni di sistema, nel pannello Rete locale della voce Privacy e sicurezza:
UUID univoci delle applicazioni
Prima di 4D 20 R9, le applicazioni 4D create condividevano lo stesso UUID dell’applicazione 4D Volume Desktop o 4D Server utilizzata come origine.
Ora, quando si crea un’applicazione, il suo UUID viene impostato automaticamente utilizzando una combinazione dell’applicazione 4D di origine e dell’identificatore dell’applicazione. Questo garantisce che l’applicazione sia considerata unica sui sistemi macOS e mantiene lo stesso UUID per l’applicazione finché si utilizza la stessa versione dell’applicazione sorgente 4D.
Naturalmente, questo nuovo comportamento si applica anche al componente Build4D!
Buone notizie, non c’è nulla da fare, nulla da modificare nella catena di compilazione, tutto è completamente automatico. Di solito si può smettere di leggere qui, ma se è necessario, forniamo il pieno controllo dell’UUID! Questo è spiegato nel paragrafo seguente.
Funzioni aggiornate
Per supportare questa nuova caratteristica, abbiamo aggiornato la funzione File. getAppInfo() per restituire l’UUID dell’applicazione quando viene applicata all’eseguibile dell’applicazione. Ecco un esempio di codice:
var $app:=File("/Applications/myApp.app/Contents/MacOS/myApp")
var $info:=$app.getAppInfo()
Ecco un esempio di risultato:
{
"archs": [
{
"type": 16777223,
"name": "x86_64",
"uuid": "9C286FBFFAAA242FEBF462654C950ECF"
},
{
"type": 16777228,
"name": "arm64",
"uuid": "8D8AA28824AACC558AB3D287A43EC53A"
}
]
}
Inoltre, la funzione File. setAppInfo() è stata migliorata per consentire di definire il proprio UUID, se lo si desidera. Ecco come fare:
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)
Ci auguriamo che questa funzione migliori l’esperienza dell’utente con le applicazioni distribuite, garantendo che siano uniche e meglio integrate negli ambienti macOS.
Buona codifica!