macOS は Sequoia 以降、アプリケーションの UUID に基づいてネットワークアクセスなど様々なプライバシーとセキュリティの設定を制御するようになりました。ビルドした 4Dアプリケーションの UUID はどれも同じなので、エンドユーザー側では、アプリケーションをインストールするたびにプライバシーとセキュリティの設定をやりおさなければならないなどの不便が発生する可能性があります。これに対処するため、4D 20 R9 から、macOS用にビルドされた各 4Dアプリケーションは、独自のアプリケーションUUID を持つようになりました。この変更により、アクセス制御のチューニングがより確実になりました。以下で、詳細について説明します。
macOS Sequoia とアプリケーションUUID
Sequoia バージョンでは、macOS はプライバシーとセキュリティの設定の一部を、アプリケーション名ではなくアプリケーションUUID に基づいて行うようになりました。そのため、複数のアプリケーションが同じ UUID を共有している場合、システム制御で問題が発生する可能性があります。このテクニカルノートで説明されているように、これは特にローカルネットワークアクセスに関連しています。関連する設定は、システム設定ダイアログの「プライバシーとセキュリティ」項目の「ローカルネットワーク」パネルにあります:

ユニークなアプリケーションUUID
4D 20 R9 以前までは、ビルドされた 4Dアプリケーションは、ソースとして使用された 4D Volume Desktop または 4D Server アプリケーションと同じ UUID を共有していました。
今後は、アプリケーションのビルド時に、ソースの 4Dアプリケーションとアプリケーション識別子の組み合わせを使用して、UUID が自動的に設定されます。これにより、あなたのアプリケーションは macOS システム上でユニークであるとみなされ、同じバージョンの 4Dソースアプリケーションを使用する限り、あなたのアプリケーションの UUID は同じに保たれます。
もちろん、この新しい動作は Build4D コンポーネントにも適用されます!
さらに朗報です。ビルドチェーンで何も変更する必要はなく、これはすべて自動でおこなわれます。通常はここで読むのをやめても構いませんが、もし必要であれば、UUID の完全なコントロールも提供します! これについては次の段落で説明します。
更新された関数
この新機能をサポートするために、File.getAppInfo() 関数が更新され、アプリケーションの実行ファイルに適用したときにアプリケーションの UUID を返すようにしました。サンプルコードを以下に示します:
var $app:=File("/Applications/myApp.app/Contents/MacOS/myApp")
var $info:=$app.getAppInfo()
以下は結果のサンプルです:
{
"archs": [
{
"type": 16777223,
"name": "x86_64",
"uuid": "9C286FBFFAAA242FEBF462654C950ECF"
},
{
"type": 16777228,
"name": "arm64",
"uuid": "8D8AA28824AACC558AB3D287A43EC53A"
}
]
}
さらに、File.setAppInfo() 関数が強化され、必要に応じて独自の UUID を定義できるようになりました。以下はその方法です:
var $app:=File("/Applications/myApp.app/Contents/MacOS/myApp")
var $info:=$app.getAppInfo()
// すべてのアーキテクチャーに UUID を再生成します
For each ($arch; $info.archs)
$arch.uuid:=Generate UUID
End for each
// 新しい UUID でアプリを更新します
$app.setAppInfo($info)
この機能により、macOS に合った仕方でそれぞれの本番アプリケーションに独自性を持たせることができ、ユーザーエクスペリエンスが向上することを期待しています。
よいコーディングを!
現在、この投稿へのコメント機能は利用できません。