• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Dir creation from installer tool is always locked
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Dir creation from installer tool is always locked


  • Subject: Re: Dir creation from installer tool is always locked
  • From: Mike <email@hidden>
  • Date: Fri, 18 Apr 2008 18:41:55 -0700

Stéphane Sudre wrote:

On Apr 19, 2008, at 12:46 AM, Mike wrote:


Stéphane Sudre wrote:
On Apr 19, 2008, at 12:09 AM, Mike wrote:
No matter what I do, and no matter what permissions I give to subpackages in my metapackage, when I have my postinstall script run a CoreFoundation tool that I bundle in my installer, any directories created by my tool at postinstall time are created with 'system' as being the owner, and hence such directories are locked. How do I create a directory from within a postinstall tool that is unlocked?

I had assumed that since the package was running with root permissions and since the installer has authorization, the directory would be created with unlocked permissions. Attempting to set the owner or group or permissions on any created dirs after they are created also fails.
Stupid questions of the day:
- Which API and methods do you use to create your directory?
- Which API and methods do you use to to change the owner, group or permissions?

I tried both the NSFileManager methods and Carbon methods such as FSCreateDirectoryUnicode and -fileAttributesAtPath:traverseLink: and -changeFileAttributes:atPath. Those all fail apparently because the tool I launch is running with the wrong owner or permissions.


I was finally able to get it to work from the postinstall script itself:

USER="$HOME"
LIBRARY_RECEIPTS_DIR="/Library/Receipts/"
USER_LIBRARY_RECEIPTS_DIR="${USER}${LIBRARY_RECEIPTS_DIR}"

mkdir -m 777 "${USER_LIBRARY_RECEIPTS_DIR}"

I was unaware of the -m option for mkdir. For some reason postinstall runs with adequate permissions, but any sub-binaries it launches don't.

The issue is not with the tool AFAIK, it's in these APIs.

I've never been able to use the NSFileManager of FSCatalogInfo API to change the permissions or owners of a file/directory in 7 years. I will avoid the rant on NSFileManager and just say that I always use the chown and chmod BSD C methods because they just work.

My guess is if I went to all the trouble writing a real helper tool, and jumped through all the Apple hoops for setting it up and executing it properly, the NSFileManager & Carbon calls would work. But who would want to go to all that trouble when one can just add a few lines to the postinstall and let the installer handle the rest.
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Installer-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden
References: 
 >Dir creation from installer tool is always locked (From: Mike <email@hidden>)
 >Re: Dir creation from installer tool is always locked (From: Stéphane Sudre <email@hidden>)
 >Re: Dir creation from installer tool is always locked (From: Mike <email@hidden>)
 >Re: Dir creation from installer tool is always locked (From: Stéphane Sudre <email@hidden>)

  • Prev by Date: Re: Dir creation from installer tool is always locked
  • Next by Date: Re: Dir creation from installer tool is always locked
  • Previous by thread: Re: Dir creation from installer tool is always locked
  • Next by thread: Installer reporting wrong final size - storing old receipt info somewhere
  • Index(es):
    • Date
    • Thread