Skip to content

アプリタイプと戦略

アプリタイプコンテナ分類移行戦略ロック保護備考
ネイティブ macOS アプリ(自動更新なし)standaloneAppmacOS Stub Portalなし例:Safari、Finder
Sparkle 自動更新アプリstandaloneAppmacOS Stub Portalあり例:一部の個人開発者アプリ
Electron アプリ(app-update.yml なし)standaloneAppmacOS Stub Portalなし例:VS Code
Electron アプリ(app-update.yml あり)standaloneAppmacOS Stub Portalあり例:Slack、Discord
Electron + Sparkle ハイブリッドアプリstandaloneAppmacOS Stub Portalあり両方のフラグが独立して検出される
カスタムアップデーターアプリ(Chrome、Edge)standaloneAppmacOS Stub PortalなしLaunchServicesKSProductID などで識別
iOS アプリ(Mac 版)standaloneAppiOS Stub PortalなしWrappedBundle からアイコンを抽出;署名なし
Mac App Store アプリstandaloneAppmacOS Stub PortalなしSIP 保護;再署名不可
単一アプリコンテナディレクトリsingleAppContainerWhole App Symlinkなし.app が1つのみのディレクトリ;全体シンボリックリンク
アプリスイートディレクトリ(例:Office)appSuiteFolderWhole App Symlink内部アプリによる.app が2つ以上のディレクトリ;全体シンボリックリンク
.app 以外のパスWhole App Symlink.app 以外の拡張子を持つパス

⚠️ ロック保護について

アプリにロックが必要とマークされた場合(needsLock = true)、AppPorts は移行完了後に外部ストレージアプリに対して chflags -R uchg を実行し、イミュータブルフラグを設定します。これにより自動更新プログラムが外部コピーを削除または変更するのを防止しますが、アプリが自己更新できなくなります。更新する前に AppPorts で手動ロック解除が必要です。

💡 カスタムアップデーターアプリがロックされない理由

Chrome や Edge のようなカスタムアップデーターを使用するアプリはロックされません。これらのアプリのアップデーターは通常、新しいバージョンをローカルの内部ストレージにダウンロードしてインストールします。macOS Stub Portal のリンク隔離特性により、外部ストレージ上のアプリファイルは破損しません。

AppPorts がローカル内部ストレージ上のアプリバージョンが外部ストレージ上のバージョンより新しいことを検出すると、アプリに「移行待ち」タグを自動的に付与し、最新バージョンを同期するために再移行を促します。

最近更新