Developers:Unified OSX

From OCS Inventory NG
Jump to: navigation, search


Skeleton .app framework (working directory)

Skeleton .app framework (original copy)

Used to checkout the most current cvs code and add some darwin specific patches, prepare it for building

Used to build and bind the cvs code to the cocoa application

Used to add system users, install the package, install the daemon service and launch the service

Used to uninstall and remove users from the system

Used to add user: _ocsng and group: _ocsng to the system (UID/GID: 3995)

Used to remove user and groups from local host

Darwin-Cocoa Wrapper (XCode Project)

Source code to build your own native Cocoa .app


Launchctl plist file used to launch the service at boot


PackageMaker project file. Used to build the .pkg package. Settings file able to be opened with PackageMaker.

Package-Root Structure

  • /Applications/ - where the application gets intalled
  • /Library/LaunchDaemons/org.ocsng.agent.plist - LaunchD file for launching service
  • /etc/ocsinventory-agent/ocsinventory-agent.cfg - default config file for target system
  • /var
    • lib - where the default server settings are stored (.adm and .conf files from the server)
    • log - where the log file is stashed Structure

    • MacOS/OCSNG - i386/ppc binary image
    • Resources/
      • - script OCSNG binary calls by default (compiled in)
      • ocsinventory-agent - script called by
      • lib/ - local library for ocsinventory-agent, includes system specific perl dependencies

Building the Agent

(You will need Xcode tools and PackageMaker installed under /Developer for this)

  • cd into the package-root directory. This will emulate the root directory for the target system we'll be installing to.
  • Modify pacakge-root/etc/ocsinventory-agent/ocsinventory-agent.cfg file to match your default agent settings
  • run the script to check out the latest cvs code, this will also patch a few things for the darwin specific installation.
  • Run the script using sudo (needed to ensure correct permissions on package-root directory before package is built. This will do the perl Makefile.PL and such, then copy the core code to the .app framework, set the permissions and build the resulting .pkg for deployment.

Application Flow