Sequoiaのアップデートにより、macOSはネットワークアクセスなど様々なプライバシーとセキュリティ制御のためにアプリケーションのUUIDに依存するようになった。macOSのこの新機能により、エンドユーザー側では、ビルドした4Dアプリケーションを頻繁に再認証しなければならないなどの問題が発生する可能性があります。これに対処するため、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()
// 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)
この機能により、macOS環境内でのアプリケーションの独自性と統合性が向上し、デプロイされたアプリケーションのユーザーエクスペリエンスが向上することを期待しています。
よいコーディングを!