Add DMG creation to macOS package script

This commit is contained in:
Micah Lee 2020-11-06 09:33:37 -08:00
parent 7f18a5e973
commit 7d477103e2
No known key found for this signature in database
GPG Key ID: 403C2657CD994F73
2 changed files with 41 additions and 5 deletions

View File

@ -132,7 +132,7 @@ Make sure your virtual environment is active:
. venv/bin/activate . venv/bin/activate
``` ```
Run the macOS build script: Run the macOS build script (you'll need to `brew install create-dmg` first):
```sh ```sh
./package/macos/build.py --with-codesign ./package/macos/build.py --with-codesign
@ -140,11 +140,11 @@ Run the macOS build script:
Now, notarize the release. You must have an app-specific Apple ID password saved in the login keychain called `onionshare-notarize`. Now, notarize the release. You must have an app-specific Apple ID password saved in the login keychain called `onionshare-notarize`.
- Notarize it: `xcrun altool --notarize-app --primary-bundle-id "com.micahflee.onionshare" -u "micah@micahflee.com" -p "@keychain:onionshare-notarize" --file macOS/OnionShare-$VERSION.dmg` - Notarize it: `xcrun altool --notarize-app --primary-bundle-id "com.micahflee.onionshare" -u "micah@micahflee.com" -p "@keychain:onionshare-notarize" --file macOS/OnionShare.dmg`
- Wait for it to get approved, check status with: `xcrun altool --notarization-history 0 -u "micah@micahflee.com" -p "@keychain:onionshare-notarize"` - Wait for it to get approved, check status with: `xcrun altool --notarization-history 0 -u "micah@micahflee.com" -p "@keychain:onionshare-notarize"`
- After it's approved, staple the ticket: `xcrun stapler staple macOS/OnionShare-$VERSION.dmg` - After it's approved, staple the ticket: `xcrun stapler staple macOS/OnionShare.dmg`
This will create `macOS/OnionShare-$VERSION.dmg`, signed and notarized. This will create `macOS/OnionShare.dmg`, signed and notarized.
### Source package ### Source package

View File

@ -86,7 +86,43 @@ def main():
) )
print(f"○ Signed app bundle: {app_path}") print(f"○ Signed app bundle: {app_path}")
print("○ TODO: Make a DMG package") if not os.path.exists("/usr/local/bin/create-dmg"):
print("○ Error: create-dmg is not installed")
return
print("○ Creating DMG")
dmg_path = os.path.join(desktop_dir, "macOS", "OnionShare.dmg")
run(
[
"create-dmg",
"--volname",
"OnionShare",
"--volicon",
os.path.join(
desktop_dir, "src", "onionshare", "resources", "onionshare.icns"
),
"--window-size",
"400",
"200",
"--icon-size",
"100",
"--icon",
"OnionShare.app",
"100",
"70",
"--hide-extension",
"OnionShare.app",
"--app-drop-link",
"300",
"70",
dmg_path,
app_path,
"--identity",
identity_name_application,
]
)
print(f"○ Finished building DMG: {dmg_path}")
if __name__ == "__main__": if __name__ == "__main__":