Package Maker Mac Download

  • Introducing Plugin Manager. By adding js files in the project's plugin folder, you will be able to select the plugin in the Plugin Manager. You can see script details, script parameters and the ability to set it.
  • In my guess, I can use package installer in XCode. But I can not find package installer in /Development/Utility. Recently, XCode Development directory was moved in XCode package, so I checked it, but still I cannot find package maker. 1) Where is package maker? 2) Can I install heroku and git with Package Maker?

Links to the latest version of Slavemaker can be found at:

  • Author's Uploads/Downloads Forum at MasterBloodfer Hentai Forum (Registration Required)
  • Folder : Slave Maker on Futanari Palace Forums (Registration Required)

Creating Software Package with Single File. Creating a package to install with a single installable file is very easy. Follow the steps mentioned below: Navigate to Software Deployment - Add Packages - Mac. Specify a name for the Package and provide the details of the package for your personal reference. Click Installation tab.


  • 1Slavemaker 3
  • 2Slavemaker 2

Slavemaker 3[edit]

A 4Shared site is maintained for all other files is maintained by the MasterBloodfer user windsongbard and usually has the latest update versions.

17-dec-2015 Slave Maker 3.5.02 Release[edit]

13-dec-2015 Slave Maker 3.5.01 Release[edit]

05-dec-2015 Slave Maker 3.5 Release[edit]

from Cmacleod Blog

02-nov-2014 Slave Maker 3.4.01[edit]

from Cmacleod Blog

2012-09-01 Slave Maker 3.3.01[edit]

Updated Full Game
torrents

http://exoshare.com/download.php?uid=1SQWE5DO

bad link


Raw files

http://94.242.220.45:5995/

Update Only
torrent

http://exoshare.com/download.php?uid=1SQWE5DO

filehost link

http://uploadmirrors.com/download/GCHI9EGQ/Update3301.rar


mirror

https://rapidshare.com/files/2413242522/Update3301.rar

2012-08-26 Slave Maker 3.3.[edit]

  • From Cmac Blog

Basic Pack
This is the core game and is a playable version of the game, with a few slaves, assistants and minor slaves. It also contains all the standard events and all the game executables, including a Mac OSX version in this release.
If you have not played the game before then download this version and try it out.

size: 320Mb

torrenthttp://exoshare.com/download.php?uid=MOPORRVE

direct downloadhttp://94.242.220.45/Basic%20Pack/

filehosthttp://exoshare.com/download.php?uid=M7KHSM2P


Assistant Pack
This is a pack of additional assistants, fellow slavemakers to aid in supervising your slaves. They can have special abilities and give bonuses to training slaves.

This pack is optional, and you can choose not install this of you want.

These were developed by various people, myself, Someone1001, M.I.A amongst others. There is a full list with credits in the Basic Pack in the html fileAssistants List.html

size 236Mb

torrenthttp://exoshare.com/download.php?uid=1PINMBBE
magnet linkmagnet:?xt=urn:btih:5DBF43C73576584B4172F649203C0A183EB2B7ED&dn=Assistants%20Pack&tr=udp%3a//tracker.publicbt.com%3a80

Package Maker Mac Download

direct download http://94.242.220.45/Assistants%20Pack/

filehosthttp://exoshare.com/download.php?uid=RWWYMSMF

mirrorhttps://rapidshare.com/files/906615617/AssistantsPack.rar


Minor Slaves Pack
This is a pack of additional minor slaves, lower ranked slaves that can be used to help train you slaves. Some have special abilities, for instance the Nurse Cora.

This pack is optional, and you can choose not install this of you want.

These were developed by several other developers like CampeonKid, M.I.A, Thf772. There is a full list of them with credits in the Basic Pack in the fileMinor Slaves List.html

size: 197Mb

torrenthttp://exoshare.com/download.php?uid=16SH2EBF
magnet linkmagnet:?xt=urn:btih:D5B60A1B81907DDFED9F685E10F224D273DE424E&dn=Minor%20Slaves%20Pack&tr=udp%3a//tracker.publicbt.com%3a80

direct downloadhttp://94.242.220.45/Minor%20Slaves%20Pack/

filehosthttp://exoshare.com/download.php?uid=NXC467WL

mirrorhttps://rapidshare.com/files/1243509341/MinorSlavesPack.rar


Slaves Packs
These remaining 7 packs are collections of slaves released for the game. Most packs contain 10 slaves and are organised in order the slaves were released.

These packs are optional, and you can choose to download and install any or all of these, or none.

A full list of the slaves and credits can be found in the Basic Pack in the fileSlave List.html

size: 250 to 500Mb varies from pack to pack

torrents (an archive of all torrent files)http://exoshare.com/download.php?uid=0V9J1LQFmagnet links

magnet:?xt=urn:btih:23D00665F71EADDF1720DB6F9FAAAD747556A5F7&dn=Slave%20Pack%201&tr=udp%3a//tracker.publicbt.com%3a80
magnet:?xt=urn:btih:F0BC988ECEB5AB4536A65E2321CDC79882199AFD&dn=Slave%20Pack%202&tr=udp%3a//tracker.publicbt.com%3a80
magnet:?xt=urn:btih:BE48B3F5FE5C696A567EB6EDCEEE74A5A841D11C&dn=Slave%20Pack%203&tr=udp%3a//tracker.publicbt.com%3a80
magnet:?xt=urn:btih:52D9D530E390305B26A8525182C6C268060A4735&dn=Slave%20Pack%204&tr=udp%3a//tracker.publicbt.com%3a80
magnet:?xt=urn:btih:C3A18016117C582DB2C4C08FD3E3FA2B020BC847&dn=Slave%20Pack%205&tr=udp%3a//tracker.publicbt.com%3a80
magnet:?xt=urn:btih:9C7B3BB155DEE4495795D7515855C42D406A6A10&dn=Slave%20Pack%206&tr=udp%3a//tracker.publicbt.com%3a80
magnet:?xt=urn:btih:E1E379316CE1B931093DA270A9B7BA66609D0EAA&dn=Slave%20Pack%207&tr=udp%3a//tracker.publicbt.com%3a80

direct downloads

http://94.242.220.45/Slave%20Pack%201/
http://94.242.220.45/Slave%20Pack%202/
http://94.242.220.45/Slave%20Pack%203/
http://94.242.220.45/Slave%20Pack%204/
http://94.242.220.45/Slave%20Pack%205/
http://94.242.220.45/Slave%20Pack%206/
http://94.242.220.45/Slave%20Pack%207/

filehost
slaves 1http://exoshare.com/download.php?uid=UWEJYLWO
mirrorhttps://rapidshare.com/files/3529468547/SlavesPack1.rar
slaves 2http://exoshare.com/download.php?uid=RW75OGPI
mirrorhttps://rapidshare.com/files/4240809164/SlavesPack2.rar
slaves 3 http://exoshare.com/download.php?uid=0L5RLPAC
mirrorhttps://rapidshare.com/files/1150787219/SlavesPack3.rar
slaves 4http://exoshare.com/download.php?uid=9MGSZRK5
mirror https://rapidshare.com/files/104356646/SlavesPack4.rar
slaves 5http://exoshare.com/download.php?uid=QQYHOMSG
mirror https://rapidshare.com/files/112912015/SlavesPack5.rar
slaves 6http://exoshare.com/download.php?uid=CJHFBIYE
mirror https://rapidshare.com/files/1583381954/SlavesPack6.rar
slaves 7http://exoshare.com/download.php?uid=1UYJYXUK
mirrorhttps://rapidshare.com/files/2554139722/SlavesPack7.rar

Full Version
hm2k made a torrent of the complete version, including some recent (after the 3.3 release) changes by M.I.A. In general I would prefer you to use the individual torrents above, but if you prefer here is the torrent


magnet:?xt=urn:btih:E18E26DE0EF189604612FA8BC5AACF9C92865D92&dn=Slave%20Maker%203.3%20-%20Full%20Pack%20and%20MIA&tr=udp%3a//tracker.openbittorrent.com%3a80/announce

2011-12-12 Slavemaker 3.2.06[edit]

  • Torrent for 3.2.06 with all 3rd party updates as of 3-13-2012 Torrent
  • Need to be unzipped with 7zip.


  • Full Version + Slaves/Assistants/Minor Slaves Update as of 4-28-2012 - 3.15 GB!
  • Split .zip archive. Can be extrated with 7Zip ONLY.
Part 1: DepositFiles
Part 2: DepositFiles
Part 3: DepositFiles
Part 4: DepositFiles
Part 5: DepositFiles


  • Full Version + Slaves/Assistants/Minor Slaves Update as of 5-25-2012 = 3.08 GB!
  • Two compressed .zip folder. Dezip and play.
Part 1 FileFactory
Part 2 FileFactory


  • Torrent of M.I.A's version (the File Factory/most recent one)
Torrent

2011-11-27 Slavemaker 3.2.05[edit]

  • This version is unstable/bugged. It is recommended to skip it for 3.2.06.
  • Upgrade from 3.2.04

2011-10-31 Slavemaker 3.2.04[edit]

  • Upgrade from 3.2.03

2011-10-24 Slavemaker 3.2.03[edit]

  • Full version

2011-07-24 Slavemaker 3.2.02[edit]

  • Full Version
  • A Fix for some Slave issues.

2011-06-28 Slavemaker 3.2.01[edit]

  • Full Version
  • Upgrade from 3.2

2011-06-26 Slavemaker 3.2.0[edit]

  • Full version

2010-12-15 Slavemaker 3.1.10c[edit]

  • Upgrade from 3.1.10b

2010-12-11 Slavemaker 3.1.10b[edit]

  • No links avaliable.

2010-10-31 Slavemaker 3.1.10a[edit]

  • Upgrade from 3.1.09d
    • No links avaliable.

2010-08-28 Slavemaker 3.1.09d[edit]

  • No links avaliable.

2010-08-05 Slavemaker 3.1.09b[edit]

  • No links avaliable.

2010-06-29 Slavemaker 3.1.08[edit]

Package maker mac download free
  • No links avaliable.

2010-06-07 Slavemaker 3.1.06[edit]

  • MediaFire
    • Update from 3.1.05 to 3.1.06 (131Mb)

2010-05-30 Slavemaker 3.1.05[edit]

  • No links avaliable.

2010-05-17 Slavemaker 3 v1.04[edit]

  • Upgrade for 3 v1.03 version

2010-05-02 Slavemaker 3 v1.03[edit]

  • Upgrade for 3 v1.02 version (Does not contain all the updates that the full install has)

2010-04-26 Slavemaker 3 v1.02[edit]

  • No links avaliable.

2010-04-25 Slavemaker 3 v1.01[edit]

  • Upgrade for existing 3 v1.0 version (200MB)

2010-04-20 Slavemaker 3 v1.0[edit]

  • Mediafire
    • part 1 (200MB)
    • part 2 (200MB)
    • part 3 (29.3MB)

Slavemaker 2[edit]

The 4Shared alternate site is maintained by the MasterBloodfer user windsongbard and usually has the latest update versions. Another 4Shared site is maintained for all other files.

The MediaFire alternate site is maintained by the MasterBloodfer user Nete and currently maintains an archive of all released 15.x versions.

2009-12-14 Yurika Special Update[edit]

  • No links avaliable.

2009-11-25 Shampoo Special Update[edit]

2009-11-05 v15.8[edit]

  • Full Install Part 1 (200MB) MediaFire
  • Full Install Part 2 (182MB) MediaFire
  • Alternate Site for Updates4Shared
  • Alternate Site 14Shared

2009-11-01 v15.7[edit]

  • Alternate Site 14Shared

2009-10-29 v15.6[edit]

The 15.6 update is only valid for existing 15.5 installations. The developer has marked 15.6 as a 'beta-ish' release.

  • No links avaliable.

2009-10-22 v15.5[edit]

  • No links avaliable.

2009-10-16 v15.4[edit]

  • No links avaliable.

v15.2[edit]

  • No links avaliable.

v15.0[edit]

  • No links avaliable.

Slave Builder[edit]

  • V1.3 + Bugfix4shared
  • V1.44shared
  • Slave Builder Guide4shared

SDK[edit]

  • Slave Development Kit v9 (97.08 MB) Mega

3rd Party Content/Add Ons[edit]

Additional content can be found on the Add Ons page.

Slavemaker (Revised)[edit]

  • Original Revised version of Slavemaker by cmacleod (160MB) Rapidshare

Slavemaker (Original)[edit]

  • Original version of Slavemaker by Pooolka (37MB) Rapidshare
Retrieved from 'https://otakubell.com/smw/index.php?title=Downloading_Slavemaker&oldid=20426'
Mac OS X Software
PackagingSequoiasMisc.

PackageMaker How-to

This document is targeted towards Mac OS X Developers with a minimum background on Mac OS X and notions like file paths, bundles, Developer tools.


A few words regarding this document

This document was written with PackageMaker 1.x in mind.

PackageMaker is available in version 3.0.4 at the time of the writing of this note. All the pieces of information in this document still apply when you select the target to be Mac OS X 10.3 in PackageMaker.

What is PackageMaker?

PackageMaker is the installing solution provided by Apple with its developer tools.

Contrary to other installers' solution, PackageMaker does not create self-running installer (i.e. it does not build an application). Instead, PackageMaker is creating a package:

A package is a bundle (with a .pkg extension) which contains an archive of files to install and information on where to install them. It can also includes Read Me, License documents and scripts to run before or after the installation.

To install a package, all you have to do is to double-click on its icon in the Finder and the Installer.app application will be launched and will guide your through the necessary steps of the installation.

Packages are the solution used by Apple to install Mac OS X and to provide System or Applications upgrades via the Software Update solution.

In which cases may I use an installer?

The first question you must ask yourself is:

'Do I need an installer to install my applications or documents?'

For instance, if you're distributing an application without any other files to install (Frameworks, StartupItems, Drivers, etc.), you don't need to use an installer in 99.99% of cases.

The 0.01% left is made of unusual cases like for instance if you want your application to be installed in the Applications folder of the root home directory (but this is just an example). For the other 99.99%, just distribute your application inside a Disk Image and inform the user in the Read Me file he/she just needs to move the file into the Applications folder to install it. You can also use the background image of the Disk Image to provide instructions to the user.

If you're distributing a solution that needs to put a driver in /SystemLlibrary/Extensions, an application in /Applications, a framework in /Library/Frameworks, then you seriously need an installer.

What are the pro and cons of using PackageMaker as my installing solution?

Pro
  • Apple uses installation packages in the format that PackageMaker can produce.
  • It's free.
  • This allows you to make remote installation using Apple Remote Desktop (1.1 or later).
  • Packages can be installed via the Terminal (Mac OS X Server and Mac OS X client)
  • It's a quite complete solution.
Cons
  • If you're screwing something when building your installer this may lead to unwanted results on the end-user's machine - do you hear the sound of the iTunes updater? But you can ruin a system using other installers too (if you don't know how, just ask).
  • There is no uninstall solution provided by Apple.
  • It's not available on another platform.
There used to be two interesting articles on this topic on the Stepwise web site but this website has disappeared.

What are the other available installing solutions?

The following list is not exhaustive, it's just including the 3 major commercial solutions.

  • Installer VISE by MindVision

    Installer VISE has been one of the 2 legacy installing solutions on Mac OS. If you're a Shareware/Freeware developer, you may get qualified for a 'free' license.

  • Install Anywhere by ZeroG Software

    The(?) Cross-Platform Installation solution. Available on Mac OS X. If you like Java, it might be your cup of te... coffee.

  • StuffIt InstallerMaker by AladdinSys

    The other legacy installing solution on Mac OS. I've never used it so I can't say a lot on it. If you're a Shareware/Freeware developer, you may get qualified for a 'free' license.

Apple
NameDeveloperVersionPriceSupports UninstallEase of useScriptable
Install AnywhereZeroG Software5.0.7$1,995YES??
Installer VISEMindVision8.2.1Free to $1,500 a yearYES?AppleScript
PackageMaker
1.1a10FreeNO2/5Command line
StuffIt InstallerMakerAladdinSys7.1.2Free to $1,000+ a yearYES??

Where can I find PackageMaker?

PackageMaker is installed with the Developer Tools. So if you don't have installed the Developer Tools, you won't find it.

If you have installed the Developer Tools, you can find PackageMaker inside the /Developer/Applications folder.

What version of PackageMaker should I use?

This may sound like a strange question but it's not that strange.

When Apple released Mac OS X 10.2 (Jaguar), a new PackageMaker application was released with the Jaguar Developer Tools.

This version of PackageMaker introduced new features but also a backward incompatibility.

The backward incompatibility is that packages built with the Jaguar version of PackageMaker can't be installed on Mac OS X system prior to 10.2 (i.e. 10.0.x and 10.1.x). I don't know why the 'official' documentation is stated the contrary.

So if you want to allow users to install your package on Mac OS X 10.1 or prior, you will have to use the version of PackageMaker provided with the Mac OS X 10.1 Developer Tools.

This document will mainly deal with the 10.2 version of PackageMaker.

How do I create a package with PackageMaker?

Pre-requisite:

  • PackageMaker needs to be installed on your machine (see Where I can find PackageMaker?)
  • You need to have access to an admin account on your machine and probably to the root account.

1st step:

This is the most important step. If you make mistake during this step, the consequences might be disastrous. So don't hesitate to check what you're doing.

To indicate to PackageMaker where the files of a package should be installed, you need to create a relative file hierarchy describing where each file should be installed. For instance, if a package needs to contain an application which has to be installed in the Applications folder, you need to create an Applications folder and put the application in this folder. If you need to install a driver in the Extensions folder, you need to create a System folder, then create a Library folder within the System folder, an Extensions folder within the Library folder and finally put your driver in the Extensions folder.

As stated, the file hierarchy is a relative one. This means that you first need to create a folder which will be the starting point of the file hierarchy. The final location of this starting point will be selected during the installation process. Usually, the final starting point is the root of a volume. If you need to install a driver or an application shared by every user, then the final starting point will be the root of a volume (the boot one or another).

To illustrate what you need to do, we will take the example of a package which needs to contain an Application and a driver used by this application. In this case, this is what the file hierarchy should look like:

The MyRoot folder can be located in your home folder for instance.

When this is done, you ABSOLUTELY MUST set the right owners and permissions of the files. If you don't set the appropriate permissions, you may end up creating a security hole or make the OS work incorrectly. A legend is saying that this may slow down the whole OS and this can only be solved later by using Disk Utility.app.

In our case, we need to set the following owners and permissions:

OwnerGroupPermissions
Applicationsrootadminrwxrwxr-x
Systemrootadminrwxrwxr-x
Libraryrootadminrwxrwxr-x
Extensionsrootadminrwxrwxr-x

As for our own files (bundles), we need to set all the files composing the bundles have the following attributes:
OwnerGroupPermissions
MyApplication.approotadminrwxrwxr-x
MyDriver.kextrootwheelrwxr-xr-x

You can of course set the permissions to be more restrictive but not less.

Once this is done, you then need to check that you don't have any useless files in this hierarchy.

One example of useless file is the .DS_Store file created by the Finder. While including this file in your package won't probably cause a security flaw on the system where the package will be installed, this may lead to some unwanted behavior.

For instance, if you have a .DS_Store file within the Applications folder, this file will overwrite the .DS_Store file in the Applications folder of the system where the package is installed. Since the .DS_Store file contains information on the way the Finder should display the content of a folder, when the user will display the content of the /Applications folder in the Finder, he/she may get a view with icons not located as they were before the package was installed.

Note:

You can easily remove all the .DS_Store in the relative file hierarchy using the Terminal and a command like:

find $HOME/MyRoot/ -name '.DS_Store' -exec rm -f {} ;

2nd step:

Once, the file hierarchy is done, you can now use PackageMaker to create the package. To do this, you need to logout and login under the root account (maybe it can be done directly from an admin account, but I haven't tested that yet).

Depending on the version of PackageMaker you're using, the User Interface might be different.

You can now enter the information for your package:

  • Title: MyApplication

    This title will be used during the Installation process for the Window title, the title of some steps, etc. If this package is to be a part of a metapackage, this will also be the name displayed in the Custom section of the metapackage installer.

  • Version: 1.0

    This piece of information is not used.

  • Description: MyApplication is doing this and that.

    Contrary to what the PackageMaker documentation states, this description is used. This will be the description displayed for the package in the custom step of a metapackage installer.

  • Delete Warning: N/A

    This warning is not used currently since there is no Delete feature in the Apple's Installer solution.


  • Root: /Users/MyAccount/MyRoot

    This is the location of the Starting Point we built. It's usually a good idea to leave 'Compress Archive' checked.


  • Resources:

    We will discuss this part later. Shortly, this is the location of the Welcome, Read Me, License, background image, and scripts files.


  • Default location: /

    This is from where the Starting Point should be added. If we were just installing an application, we could have just put MyApplication.app inside the MyRoot folder and then selected /Applications as the Default location.

  • Restart Action : Required restart

    This depends on whether you need a restart so that your application, drivers, daemons, etc. are properly launched or not. In this case, let's just say that the Driver can't be launched properly outside of the startup process.

  • Authorization Action: Root Authorization

    Since we're installing a Kernel Extensions and items inside /System, we need Root authorization.

  • Flags:

    We will discuss these flags later.

Now, we can build our package using the 'Create Package' in the 'File' menu. Let's give it the following name: 'MyPackage.pkg'.
Before quiting PackageMaker, don't forget to save your package settings via the 'Save' command in the 'File' menu. This will avoid re-entering the same data later if the package information is changed or updated with new versions of the files to install.
To be able to find this package quickly, copy it into the /Users/Shared folder and logout. Login under your account and go to the /Users/Shared folder.
Double-click on the MyPackage.pkg file to test the package installation.

Additional steps

Now that you know how to build a basic package, we can see how to add additional information to the package.
As we said before, a package can contain Read Me and License documents. In fact, it can contains 3 types of documents:
  • Welcome:

    This is the document that is displayed in the 'Introduction' step (after the authentication step on Mac OS X 10.1 and 10.2 if any).
    Tip: the real-estate for the Welcome document is limited to the size of the pane. It can't be scrolled.

  • Read Me:

    This document is displayed after the Welcome document. It can be scrolled. The user can print the Read Me.

  • License:

    This document is displayed after the Read Me document. It can be scrolled and to go to the next step, the user will have to click on a button to confirm he agrees to the terms of the license. The user can print the License.

Each of the 3 documents can be in one the following formats:
  • RTF
  • RTFD
  • Text
  • HTML
They should be named as follow:
  • Welcome: Welcome.rtf, Welcome.html, Welcome.rtfd, Welcome.txt.
  • Read Me: ReadMe.rtf, ReadMe.html, ReadMe.rtfd, ReadMe.txt.
  • License: License.rtf, License.html, License.rtfd, License.txt.
To add these documents to the package, you need to create a folder and put the documents inside it. It's a good idea to create this folder at the same level that your 'MyRoot' folder.
This will look something like this:
In PackageMaker, you can now set the location for the Resources folder and when you're building your package, the documents will be added into the package and they will be displayed when the package is being installed.

What about scripts?

When installing your package, you may want or have to do some additional things.

For instance, if you're installing a Kernel Extension, you have to do the following additional operation: set the correct file owner and group. Starting with Mac OS X 10.2, Kernel Extension must be owned by the pair root/wheel. Yet even if you set the files to be owned by root/wheel in your Starting Point file hierarchy, they won't be installed with root/wheel but with root/admin. This sucks, yes. One solution to fix this is to set the correct owner/group just after the package has been installed. This can be done via a script embedded in the package that will be launched by the Installer.

Another example: your package needs to remove files from a previous version before being installed. Again this can be done via a script embedded in the package that will be launched by the Installer.

Finally, another possible case where a script can be used is when you want to prevent the user from installing your package on a Mac OS X system prior to Mac OS 10.1.3. This can be done via a script embedded in the package that will be launched by the Installer.

There are 7 types of scripts than can be launched during the Installation Process:

  • InstallationCheck:

    This script is launched at the beginning of the installation process (even before the Authentication step). It can be used to check that the package can be installed on this computer.

  • VolumeCheck:

    This script is launched in the 'Select Destination' step. It is used to determine on which volume the package can be installed.

  • preflight:

    This script is launched just after the user clicked on the 'Install' button.

  • preinstall / preupgrade:

    This script is launched after the preflight script if there's one (in the case of a single package installation); otherwise just after the user clicked on the 'Install' button.

    As you see, there are 2 types of scripts here. The preinstall one is launched when the package has never been installed (from an Installer.app point of view), the preupgrade one is launched when the package has already been installed. To determine whether a package has already been installed or not, Installer.app is having a look at the content of the following directory: /Library/Receipts. If there's a file named PackageName.pkg within it, then the package has already been installed, otherwise it's the first install.

  • postinstall / postupgrade:

    This script is launched after the files in the package have been installed. See (preinstall / preupgrade) to see which one is launched.

  • postflight:

    This script is launched after the postinstall / postupgrade script or when the package has been installed.

Note: If you're building a package with the 10.1 version of PackageMaker, the names of the scripts are a bit different.
The scripts are launched in the following order:
These scripts can be written in different languages. The common ones are:
  • Perl
  • Shell
Some information is passed by the installer to these scripts when they are launched:
LanguageParameterInstallationCheckVolumeCheckpreflightpreinstall/upgradepostinstall/upgradepostflight
Shell$0Script pathScript pathScript pathScript pathScript pathScript path
$1Package pathVolume path [1]Package pathPackage pathPackage pathPackage path
$2Default locationTarget locationTarget locationTarget locationTarget location
$3Target volumeTarget volumeTarget volumeTarget volumeTarget volume
Perl$0Script pathScript pathScript pathScript pathScript pathScript path
$ARGV[0]Package pathVolume path [1]Package pathPackage pathPackage pathPackage path
$ARGV[1]Default locationTarget locationTarget locationTarget locationTarget location
$ARGV[2]Target volumeTarget volumeTarget volumeTarget volumeTarget volume
Returned value0: Success
32: Warning
48-63: Warning: Detailed reason [2]
64: Stop Install
112-127: Stop Install: Detailed reason [3]
0: Success
32: Failure: Unknow reason
48-63: Failure: Detailed reason [4]
0: Success
!=0:Failure
0: Success !=0:Failure
0: Success !=0:Failure
0: Success !=0:Failure

[1]
The VolumeCheck script is called for every volume.
[2]
The detailed reason is an index which is computed from the Returned value like this: index = ReturnedValue - 32
Installer.app then looks for a file named InstallationCheck.strings which associated a message to the index.
The InstallationCheck.strings will be used if you're building a localized package.
[3]
The detailed reason is an index which is computed from the Returned value like this: index = ReturnedValue - 96
Installer.app then looks for a file named InstallationCheck.strings which associated a message to the index.
The InstallationCheck.strings will be used if you're building a localized package.
[4]
The detailed reason is an index which is computed from the Returned value like this: index = ReturnedValue - 32
Installer.app then looks for a file named VolumeCheck.strings which associated a message to the index.
The VolumeCheck.strings will be used if you're building a localized package.
Tip:
The scripts must have an Unix line ending. If they don't, this may crash the installation.The scripts are run under the following user account:
Authorization ActionInstallationCheckVolumeCheckpreflightpreinstall/upgradepostinstall/upgradepostflight
No Authorization requiredLogin userLogin userLogin userLogin userLogin userLogin user
Admin AuthorizationLogin userLogin userrootrootrootroot
Root AuthorizationLogin userLogin userrootrootrootroot

Once you have written your scripts, add them into the Resources folder. In our virtual example, we're adding a VolumeCheck script to prevent the user from installing the application on a system prior to Mac OS X 10.2 and we're adding a postFlight script to fix the file permissions of our Driver.
You can then re-build your package: the scripts will be embedded in it and run during the Installation.

Finally, what about the flags?

Some of these flags are useful, some are useless.
  • Allows Back Rev. :

    The installation allows to later install an earlier version of the package.

  • Install Fat:

    The installation install all the binaries for multiple platforms.

  • Relocatable:

    The user can choose the installation destination.

  • Required:

    The package is a required component for the installation. This flag is only used when the package is a component of a metapackage.

  • Root Volume Only:

    This option will only allow the root volume (/) to be the target volume of the installation. This will prevent the user to select another volume in the 'Select Destination' step.

  • Update Installed Languages Only:

    This is an interesting option that will prevent the installation of localized Resources in case the localization was not already installed.
    For instance, let's say the user has not installed the German localization of your application. Your updater is including updated German resources but not all the resources. This means that if the user is installing the updater without this flag on, the German localization will only be partial and potentially crashy. With this flag on, the German files won't be installed and not cause any potential crash.

  • Overwrite Permissions:

    The permissions of directories in the installation overwrites the ones of the corresponding directories if they already exist in the destination volume.

How can I create a package with optional installs? (also How can I build a metapackage?)

For some installers, you may want to allow the user to select where he/she wants to install some optional files or not. For instance, the Mac OS X installation lets you decide whether you wan to install some localizations of the System or not.

This can be done via a metapackage. A metapackage is basically a package which does not contain any files but just points to a list of packages. A metapackage can contain Welcome, Read Me, and License documents. It can also contain InstallationCheck and VolumeCheck scripts. The others scripts are not supported.

Building a metapackage with PackageMaker is easy as long as you know some information.


  • Title:

    Description forthcoming

  • Version:

    Description forthcoming

  • Description:

    Description forthcoming

  • Delete Warning:

    This warning is not used currently since there is no Delete feature in the Apple's Installer solution.


  • Resources:

    Same thing as for packages. pre/postflight, pre/postinstall, pre/postupgrade scripts not supported.


  • Package List:

    To be completed.

    Attribute:

    • Required: the package will always be installed/upgraded.
    • Selected: the package will be installed unless the user switched to Custom mode during the installation process and unselect it.
    • Unselected: the package will not be installed unless the user switched to Custom mode during the installation process and select it.

    Tip: When building a metapackage with PackageMaker 10.1, you must know that the Selected, Required, Unselected option will not be taken into account. This has been fixed in the 10.2 version. So you can just specify whether a package is required or not. To do this, you have to check or not the Required flag when building the package with PackageMaker 10.1.
  • Package locations:

    Description forthcoming

You can also select a metapackage to be a sub-package of a metapackage thus creating a nested hierarchy. This will result in something looking like this in the custom phase:

When a metapackage is being installed, scripts are run in almost the same sequence as with a package. The difference is with the preflight and postflight scripts.


Can I build an updater/upgrader with PackageMaker?

This is absolutely possible. Since there are pre/postupgrade scripts, it means that updating/upgrading is possible.

Basically, an updater/upgrader is just an installer which just contains the files that have been modified or added.

Some suggestions to use a package as an updater/upgrader:

  • Use the VolumeCheck script to determine if the updater/upgrader can be applied to a volume.
  • If you need to remove old files, use the postupgrade script.

How can I force the installation to be made on specific volumes?

Depending on your needs, there are 2 solutions:

  • If you just need to restrict the installation to the startup volume, check the 'Root Volume Only' flag of the packages.
  • If you want to prevent the installation on volumes that don't meet some requirements, you can use the VolumeCheck strings.

    Note: There's a refresh bug in Installer.app which will display some volumes as potential candidates for the installation when they are not. Scrolling the list of volumes fix this.

How can I add a custom background picture for my package or metapackage?

Beginning with Mac OS X 10.2, the background picture displayed in the Installer.app window can be customized by the package.
To set this background image, you just have to add a file to your package Resources folder called background.suffix where 'suffix' may be:

  • jpg
  • tif
  • gif
  • pict
  • eps
  • pdf
The ideal size for the picture is: 620 x 418. If the size is different, the picture will be scaled.
Tip: If you're building a package using the 10.1 version of PackageMaker, you can use this background picture too. It won't be displayed when the installation is made on a Mac OS X version prior to 10.2, but it will for 10.2 and later.

How can I do a multiple localization installer?

Description forthcoming

How can I distribute my packages?

First thing to note is that since a package is a bundle, you can't distribute it 'as is'.
Some solutions that can be used:

  • Archive the package using the Finder Create Archive of command.

    Description forthcoming

  • Put the package in a disk image

    Description forthcoming

Caution
Avoid using Stuffit to archive/compress your package

Previous versions of Stuffit had issues with filenames bigger than 31 characters. If the name of the package is a bit long and you have some scripts in it, the name of one script might be bigger than 31 characters. So when it will get unarchived by Stuffit, the name will be screwed and the package won't install properly.
Yet, if all the names of the files in the package are less than 31 characters, you can use Stuffit.

Don't change the name of your package

It's really a good idea to avoid changing the name of your package once it has been built. Because on Mac OS X 10.1, Installer.app is using the name of the package to find the file archive and scripts. If the name is not the original one, the installation is going to fail.

Can I call an external application from an installer?

Yes, you can call an external application from an installer. You can do this with one of the installation scripts. For instance the following postflight script will launch Preview.app:


Does PackageMaker support files with Resource fork?

Yes, it does. If some files in your file archive contains both a Data Fork and a Resource Fork, the following alert will be displayed:

Package Maker Mac Download Full

If you select the Split Forks option, files with Data and Resource Fork are going to be splitted in 2 files. The 2 forks will be re-united during the Installation process.

Is it possible to write a script to build a package?

Yes, depending on the version of the OS you're using, the tool is not the same:

  • Mac OS X 10.2.x

    Use package which is available in /usr/bin. To get information on the required parameters, type in Terminal.app:

    $ package

  • Mac OS X 10.3.x

    Use PackageMaker which is available in /Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS. To get information on the required parameters, type in Terminal.app:

    $ /Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker -help

    Man page on-line: man: packagemaker
And if you're a real thrill seeker, you may also want to build a package without these tools and just by using command line tools. Here is an example:

Package Manager For Mac

packaging script

Is there any tool to inspect packages once they have been built?

If you want to know which files are archived in a package, you have 3 solutions:

  • Installer.app:

    Since during the installation process, you can have access to the list of files in the package, one solution is to just launch the installation of the package.

    Just before clicking on the Install/Upgrade button, choose File > Show Files.

  • The command line:

    A solution for the fans of Terminal.app is to use the command line tool lsbom:

    lsbom MyPackage.pkg/Contents/Archive.bom

  • Pacifist:

    This is the best solution. Pacifist is a $20 shareware which allows you to inspect packages by displaying the hierarchy of files.

    With Pacifist, you can even install only some files just by drag and dropping them

    Pacifist is available here: CharlesSoft.

Is there any other tool to create packages and metapackages?

Yes, if you don't want to use PackageMaker, check alternative solutions such as Iceberg or Packages here: Packaging.



Package Maker Download Mac

Site Map
Copyright 2004-2014 Stéphane Sudre.