Packaging Applications For Mac Os X



Packaging

  1. Packaging Applications For Mac Os X 10.7
  2. Bundled Mac Os X Application
  3. Apple Mac Os X
  4. Mac Os X Iso

I know on windows there are a bunch of installer tools you can use to create an installer, but on Mac OS I've seen two ways to install apps: A DMG file which you download, double-click, then run an application inside - the application typically has you drag an icon to another icon (representing the Applications folder) to install the app. Whenever you need to create an installation package or distribution for Mac OS X 10.5 or later, Packages is the powerful and flexible solution you're looking for. With Packages, you can define which applications, bundles, documents or folders should be part of the payload of your installation packages and where they should be installed. Whenever you need to create an installation package or distribution for Mac OS X 10.5 or later, Packages is the powerful and flexible solution you're looking for. Building payload not load of pain With Packages, you can define which applications, bundles, documents or folders should be part of the payload of your installation packages and where.

Chrome for mac os x

In this tutorial we’ll be using py2app to create a standalone OSX application from a Python 2 or 3 source code with asimple Tkinter user interface.

'py2app is a Python setuptools command which will allow you to make standalone application bundles and plugins from Python scripts. py2app is similar in purpose and design to py2exe for Windows.'

Relevant links about py2app:

  • Source on BitBucket (last commit 2015-05-05)
  • Issue Tracker, Mailing List

This guide is loosely based on the official tutorial.Based on a Python file called Sandwich.py, we’ll create an application called Sandwich.app.

Prerequisites

Create a custom directory and create a virtualenv:

Now create a very simple Tkinter app with the filename Sandwich.py:

This little app will look like this:

Install py2app

The original version of py2app has a bug due to a newer version of ModuleGraph. Imade a fork of the project and fixed this bug on Github.Install it with pip like this:

Create a setup.py file

py2app includes py2applet, a helper which generates a setup.py file for you:

Packaging

This setup.py is a basic definition of the app:

If your application uses some data files, like a JSON, text files or images, you should include them in DATA_FILES. For example:

Build the app for development and testing

py2app builds the standalone application based on the definition in setup.py.

For testing and development, py2app provides an “alias mode”, which builds anapp with symbolic links to the development files:

This creates the following files and directories:

This is not a standalone application, and the applications built in alias mode are not portable to other machines!

The app built with alias mode simply references the original code files, so any changes you make to the original Sandwich.py file are instantly available on the next app start.

The resulting development app in dist/Sandwich.app can be opened just like any other .app with the Finderor the open command ($ open dist/Sandwich.app). To run your application directly from the Terminalyou can just run:

Building for deployment

When everything is tested you can produce a build for deployment with a calling python setup.py py2app. Make sure that any old build and dist directories are removed:

This will assemble your application as dist/Sandwich.app. Since this application is self-contained, you will have to run the py2app command again any time you change any source code, data files, options, etc.

The original py2app has a bug which would display “AttributeError: 'ModuleGraph' object has no attribute 'scan_code'” or load_module. If you encounter this error, takea look at this StackOverflow thread or use my fork of py2app.

Mac os x iso

The easiest way to wrap your application up for distribution at this point is simply to right-click the application from Finder and choose “Create Archive”.

Packaging applications for mac os x 10.13

Adding an icon

Simply add 'iconfile': 'youricon.icns' to the OPTIONS dict:

You can find free icons in icns format around the web (eg. on IconFinder or freepik).

Advanced app settings

You can tweak the application information and behaviour with modificationsto the Info.plist. The most complete reference for the keys available is Apple’s Runtime Configuration Guidelines.

Packaging Applications For Mac Os X 10.7

Here is an example with more modifications:

With these settings, the app will have the following infos:

Bundled Mac Os X Application

References

  • py2app documentation, examples
  • Tkinter, Tkinter resource collection, An Introduction to Tkinter

See Also

Apple Mac Os X

  • PyInstaller - Another tool to create cross-platform standalone apps (libraries like PyQt, Django or matplotlib are fully supported)
  • rumps - Ridiculously Uncomplicated Mac OS X Python Statusbar Apps
  • py2exe - same as py2app but for Windows .exe files
  • cx_Freeze - Another packager to create Windows .exe files

Mac Os X Iso

If you have suggestions, feedback or ideas, please reach out to me @metachris.