dmg_sign_noterize.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import os
  2. import subprocess
  3. import shutil
  4. SOURCE_DIR = os.environ.get("SOURCE_DIR", ".")
  5. DIST_DIR = os.environ.get("DIST_DIR", os.path.join(SOURCE_DIR, "dist"))
  6. DMG_PATH = "Ultimaker-Cura.dmg"
  7. APP_PATH = "Ultimaker-Cura.app"
  8. ULTIMAKER_CURA_DOMAIN = os.environ.get("ULTIMAKER_CURA_DOMAIN", "nl.ultimaker.cura")
  9. def build_dmg() -> None:
  10. create_dmg_executable = os.environ.get("CREATE_DMG_EXECUTABLE", "create-dmg")
  11. arguments = [create_dmg_executable,
  12. "--window-pos", "640", "360",
  13. "--window-size", "690", "503",
  14. "--app-drop-link", "520", "272",
  15. "--volicon", f"{SOURCE_DIR}/packaging/icons/VolumeIcons_Cura.icns",
  16. "--icon-size", "90",
  17. "--icon", "Ultimaker-Cura.app", "169", "272",
  18. "--eula", f"{SOURCE_DIR}/packaging/cura_license.txt",
  19. "--background", f"{SOURCE_DIR}/packaging/icons/cura_background_dmg.png",
  20. DMG_PATH,
  21. APP_PATH]
  22. subprocess.run(arguments)
  23. def sign(file_path: str) -> None:
  24. codesign_executable = os.environ.get("CODESIGN", "codesign")
  25. codesign_identity = os.environ.get("CODESIGN_IDENTITY", "A831301292FC30F84F3C137F2141401620EE5FA0")
  26. arguments = [codesign_executable,
  27. "-s", codesign_identity,
  28. "--timestamp",
  29. "-i", f"{ULTIMAKER_CURA_DOMAIN}.dmg",
  30. file_path]
  31. subprocess.run(arguments)
  32. def notarize() -> None:
  33. notarize_user = os.environ.get("NOTARIZE_USER")
  34. notarize_password = os.environ.get("NOTARIZE_PASSWORD")
  35. altool_executable = os.environ.get("ALTOOL_EXECUTABLE", "altool")
  36. arguments = [
  37. "xcrun", altool_executable,
  38. "--notarize-app",
  39. "--primary-bundle-id", ULTIMAKER_CURA_DOMAIN,
  40. "--username", notarize_user,
  41. "--password", notarize_password,
  42. "--file", DMG_PATH
  43. ]
  44. subprocess.run(arguments)
  45. if __name__ == "__main__":
  46. try:
  47. os.rename(os.path.join(DIST_DIR, "Ultimaker-Cura"), os.path.join(DIST_DIR, "Ultimaker-Cura.app"))
  48. except:
  49. pass
  50. sign(APP_PATH)
  51. build_dmg()
  52. sign(DMG_PATH)
  53. # notarize_dmg = bool(os.environ.get("NOTARIZE_DMG", "TRUE"))
  54. # if notarize_dmg:
  55. # notarize()