Mac Packages

This page is in need of updating. In the meantime, refer to InstallerGuideMac.

How to create a Mac OS X dmg package

When trying to modify and update a GNUmed-client-as-Mac.app that had been copied from a disk image, it can help to know that Mac "bundles" can support and reference any among multiple versions of a framework (e.g. Python). This can allow older applications to continue running, even as the framework-shared library continues to evolve, and can also explain why newer components, if simply added, may get ignored.

On an interim basis, a GNUmed 0.2.8.3 disk image has been hacked to supply GNUmed 0.5.0.

Going forward, the plan is to
  1. bundle the client into a double-clickable GNUmed.app
    … likely to be produced as an Xcode Tools "Core Data Application" project folder
  2. prepare a new disk image (modeled after the 0.2.8.3 image)
    … likely using Apple's PackageMaker (man page))
  3. package the server part
    … likely using one-click installers from enterprisedb, however as theirs is incompatible with PG 8.4 for silent mode installation, PG 8.3 remains the better pick for the 0.5 cycle of clients: enterprisedb (noninteractive).

References:

Within a package's Contents/Info.plist (which can be shown using the Mac control-click contextual menu "Show Package Contents") is the key CFBundleExecutable by which one specifies the code which is to be executed (the "executable") when the user launches the application, and is in this same Info.plist file is maintained the license and other information (Apple "Bundles" document referenced above, page 23). (Screenshot appended).

Helpful info about "Structure of a Mac OS Application Bundle" (page 21), together with Framework Bundles information (page 26) suggests that:
  • the hierarchy inside the 0.2.8.3 app may need to be refactored, for example moving Frameworks into the root "Contents" directory
  • this absent Contents/Frameworks/ is evidently supposed to have its own Resources subdirectory (also currently absent) in which an Info.plist file is supposed to provide the system with the intended configuration of the framework.

For reconsideration will be whether the Mac client would best be maintained as an Xcode tools project rather than something that would require the maintainer(s) to run make (page 12: "Creating a Bundle"):

When you create a new Xcode project (or add a target to an existing project), Xcode automatically creates the required bundle structure when 
needed. For example, the application, framework, and loadable bundle targets all have associated bundle 
structures. When you build any of these targets, Xcode automatically creates the corresponding bundle for 
you.

Note:  Some Xcode targets(such as shell tools and static libraries) do not result in the creation of a bundle 
or package. This is normal and there is no need to create bundles specifically for these target types. The 
resulting binaries generated for those targets are intended to be used as is. 

If you use make files (instead of Xcode) to build your projects, there is no magic to creating a bundle. A 
bundle is just a directory in the file system with a well-defined structure and a specific filename extension 
added to the end of the bundle directory name. As long as you create the top-level bundle directory and 
structure the contents of your bundle appropriately, you can access those contents using the programmatic 
support for accessing bundles. For more information on how to structure your bundle directory, see “Bundle 
Structures” (page 15).


Options for what we can be provided for Mac (page 11):

  1. a GNUmed "App" bundle, as a Mac package
  2. an optionally-separate framework bundle which would could be updated less often as the client App, in which case the client app could just be the client with suitable linkage to the framework.
  3. if future usage would require, a Mac PreferencePane plug-in - define custom preferences that you want to integrate into the System
Preferences application
  1. Loadable bundles. Maybe stuff like Osirix could be optionally dropped-in... later if at all.

If you are developing software for Mac OS X, you can create your own custom frameworks and use them 
privately or make them available for other applications to use. You can create a new framework using a 
separate Xcode project or by adding a framework target to an existing project. (page 27)

  • Screenshot of the contents of the Mac 0.2.8.3 client bundle file Info.plist:
    Info.plist_0.2.8.3.png
Topic attachments
I Attachment Action Size Date Who Comment
Info.plist_0.2.8.3.pngpng Info.plist_0.2.8.3.png manage 203 K 21 Aug 2009 - 01:03 JamesBusser Screenshot of the contents of the Mac 0.2.8.3 client bundle file Info.plist
Topic revision: 16 Sep 2012, SebastianHilbert
 
Download.png
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback
Powered by Olark