On May 22, 2013, at 2:22 AM, Sergey MadBish < email@hidden> wrote: I'm a newbie in Mac and it's installer technology.
I have 2 packages - one to install an Application's data (/Applications) and the second one to install different settings into the User home dir (~/Library/Preferences).
Is there a way to combine both packages into a single distribution/meta package?
PS: my current solution is to use the postinstall script to copy plist file to the user's home dir.
I am not really answering your question, but I feel is should be said: you should not be installing anything to the user's home directory. If you have default preferences, then you should instal them to /Library/Preferences so that all users on the system will get them by default. There are lots of other similar conversations to be had about template files, sample resources (e.g.: clip art), and the likeā¦ but all of those should also be done either inside the app itself, or in /Library/Application Support. If you can't put them there with how your app is constructed now, then you need to re-do your app.
Trying to do settings like this is going to be a losing proposition because there are so many corner cases that you simply are not going to be able to handle all of them. A few examples (this is by no means a complete list):
- A user does the right thing and has one account for "admin" stuff (installing apps), and a non-admin account for normal day-to-day usage. Now you are prepping the "admin" user but ignoring the real account.
- Something nasty happens to a users account, so they abandon that login and create a fresh new one. Does your app not work because it is missing those preferences?
- Does your app not work for the Guest account?
- This might be a computer lab computer, and users have network home directories that get mourned at login time. The installing user is probably local. Does your app fail here as well?
- There are multiple users on the system, you have only prepped one of them now. What happens with the second user?
- Your app is being installed in a lab remotely over ARD. So the user is root, and there might not be a user logged in on the console. Where are things going to go?
- This might be part of an automated image creation system, so might be targeting a non-booted volume. Your post install script is not going to do what anyone wants.
I hope that the point I am trying to make is clear: don't rely on preferences installed in the user directory at install time. Make your app auto-setup at first launch, or even better: make all the needed defaults either internal to the app, or in the appropriate sub-folders of the root /Library folder.
-- Karl Kuehn
|