ASAR 整合性
サポートプラットフォーム
ASAR 整合性検査は現在、macOS でのみサポートされています。
要件
Electron Forge / Electron Packager
>= electron-packager@15.4.0
または >= @electron-forge/core@6.0.0-beta.61
を使用している場合、これらの要件はすべて自動的に満たされ、Fuse の切り替え はスキップできます。
他のビルドシステム
ASAR の整合性検査を有効にするには、asar
npm パッケージが asar 整合性をサポートするバージョンで app.asar
ファイルが生成されたことを確かめる必要があります。 サポートはバージョン 3.1.0
で導入されました。
パッケージしたアプリの Info.plist
内に有効な ElectronAsarIntegrity
辞書ブロックを入力する必要があります。 以下にサンプルを示します。
<key>ElectronAsarIntegrity</key>
<dict>
<key>Resources/app.asar</key>
<dict>
<key>algorithm</key>
<string>SHA256</string>
<key>hash</key>
<string>9d1f61ea03c4bb62b4416387a521101b81151da0cfbe18c9f8c8b818c5cebfac</string>
</dict>
</dict>
有効な algorithm
の値は現在 SHA256
のみです。 hash
は ASAR ヘッダのハッシュで使うために指定するアルゴリズムです。 asar
パッケージは getRawHeader
メソッドを提供しており、このメソッドの結果をハッシュ化することでこの値を生成できます。
Fuse の切り替え
ASAR 整合性検査は現在デフォルトで無効になっており、Fuse を切り替えることで有効にできます。 Electron Fuse が何なのかやその動作方法については、Electron Fuse をご参照ください。 この Fuse を有効にすると Electron アプリのコード探索パスを介して整合性検査をバイパスできるので、通常は onlyLoadAppFromAsar
Fuse も有効にします。
const { flipFuses, FuseVersion, FuseV1Options } = require('@electron/fuses')
flipFuses(
// 例: /a/b/Foo.app
pathToPackagedApp,
{
version: FuseVersion.V1,
[FuseV1Options.EnableEmbeddedAsarIntegrityValidation]: true,
[FuseV1Options.OnlyLoadAppFromAsar]: true
}
)