以前
こういう記事を書いた.
あれから1年半経ち,少し変わったことがあるので記事にしておく.
パッケージングは相変わらずelectron-packager
electorn-builderでもできなくはないのだが……
ここに書いてあるオプションだけでは,現在使っているplistに対して,数が不足している.loginhelper.plist
を指定する場所がない.
また,結局electron-builderだけでcodesignができないので,ちゃんとどこかでcodesignしてやる必要がある. そういうことを考えると別にelectron-packagerとたいして手間が変わらない.
codesignの対象が増えた
Whalebirdは現在,Electron v6.1.xを使っているが,この状態でのCodeSignでは,以前に比べてcodesignする場所が増えた.
新たに,
$APP Helper (GPU).app
$APP Helper (Plugin).app
$APP Helper (Renderer).app
に対して行う必要がある.
というわけでこんなスクリプトになる.
# Name of your app. APP="Whalebird" # The path of your app to sign. APP_PATH="./packages/Whalebird-mas-x64/Whalebird.app" # The path to the location you want to put the signed package. RESULT_PATH="./packages/$APP.pkg" # The name of certificates you requested. APP_KEY="3rd Party Mac Developer Application: name (team_id)" INSTALLER_KEY="3rd Party Mac Developer Installer: name (team_id)" # The path of your plist files. CHILD_PLIST="./plist/child.plist" PARENT_PLIST="./plist/parent.plist" LOGINHELPER_PLIST="./plist/loginhelper.plist" FRAMEWORKS_PATH="$APP_PATH/Contents/Frameworks" # At first, rename app.asar.unpacked directory. # Because electron-builder does not store app.asar.unpacked directory. # I want to store unpacked files at the same directory as electron-builder. mv $APP_PATH/Contents/Resources/app.asar.unpacked/* $APP_PATH/Contents/Resources/ codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/Electron Framework.framework/Versions/A/Electron Framework" codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/Electron Framework.framework/Versions/A/Libraries/libffmpeg.dylib" codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/Electron Framework.framework/Versions/A/Libraries/libnode.dylib" codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/Electron Framework.framework" codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/$APP Helper.app/Contents/MacOS/$APP Helper" codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/$APP Helper.app/" codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/$APP Helper (GPU).app/Contents/MacOS/$APP Helper (GPU)" codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/$APP Helper (GPU).app/" codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/$APP Helper (Plugin).app/Contents/MacOS/$APP Helper (Plugin)" codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/$APP Helper (Plugin).app/" codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/$APP Helper (Renderer).app/Contents/MacOS/$APP Helper (Renderer)" codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$FRAMEWORKS_PATH/$APP Helper (Renderer).app/" codesign -s "$APP_KEY" -f --entitlements "$LOGINHELPER_PLIST" "$APP_PATH/Contents/Library/LoginItems/$APP Login Helper.app/Contents/MacOS/$APP Login Helper" codesign -s "$APP_KEY" -f --entitlements "$LOGINHELPER_PLIST" "$APP_PATH/Contents/Library/LoginItems/$APP Login Helper.app/" codesign -s "$APP_KEY" -f --entitlements "$CHILD_PLIST" "$APP_PATH/Contents/MacOS/$APP" codesign -s "$APP_KEY" -f --entitlements "$PARENT_PLIST" "$APP_PATH" productbuild --component "$APP_PATH" /Applications --sign "$INSTALLER_KEY" "$RESULT_PATH"
ApplicationLoaderが消えた
上記のスクリプトでできあがった.pkg
ファイルをアップロードするための,ApplicationLoaderというソフトウェアは,Xcode 11以降に付属されなくなった.
このため,ApplicationLoaderを使うことができない.もちろん古いXcodeをインストールすればApplicationLoaderはあるのだが.
というわけでApplicationLoaderがない場合,どうやって.pkg
ファイルをAppStoreにアップロードするかという話なのだが,やり方は2つある.
- Transporter
- altool
Transporter
Appleから,新しくTransporterというアプリケーションがリリースされている.
apps.apple.comこれをインストールすることで,.pkg
ファイルはアップロードできる.
altool
Transporterは,ごく最近でてきたもので,それまではaltoolを使っていた. altoolはCLIツールで,Xcode内のすごくわかりにくい場所に格納されている.
手元のMacBookPro Catalinaの場合,
/Applications/Xcode.app/Contents/SharedFrameworks/ContentDeliveryServices.framework/Versions/A/Frameworks/AppStoreService.framework/Versions/A/Support/altool
に存在する.
というわけでこのパスを,$PATH
に設定する.
$ export PATH=$PATH:/Applications/Xcode.app/Contents/SharedFrameworks/ContentDeliveryServices.framework/Versions/A/Frameworks/AppStoreService.framework/Versions/A/Support
そして,
$ xcrun altool --upload-app -f ./Whalebird.pkg -t osx -u $USER -p $PASSWORD
とすることでアップロードできる.
$USER
はicloudに登録されているユーザのemail,$PASSWORD
はパスワードだが,アカウントに2段階認証を設定している場合,app-specific passwordを生成してそれを設定する.