summaryrefslogtreecommitdiffstats
path: root/admin/Sources/Clients/ogagent/macos/build-pkg.sh
diff options
context:
space:
mode:
Diffstat (limited to 'admin/Sources/Clients/ogagent/macos/build-pkg.sh')
-rwxr-xr-xadmin/Sources/Clients/ogagent/macos/build-pkg.sh87
1 files changed, 87 insertions, 0 deletions
diff --git a/admin/Sources/Clients/ogagent/macos/build-pkg.sh b/admin/Sources/Clients/ogagent/macos/build-pkg.sh
new file mode 100755
index 00000000..500da58e
--- /dev/null
+++ b/admin/Sources/Clients/ogagent/macos/build-pkg.sh
@@ -0,0 +1,87 @@
+#!/bin/bash
+# Create macOS installation packages.
+# Based on bomutils tutorail: http://bomutils.dyndns.org/tutorial.html
+
+VERSION=1.1.0
+AUTHOR="OpenGnsys Project"
+
+# Create empty directories.
+cd $(dirname $0)
+rm -fr build
+mkdir -p build && cd build
+mkdir -p flat/base.pkg flat/Resources/en.lproj
+mkdir -p root/Applications
+
+# Copy application and script files.
+cp -a ../../src root/Applications/OGAgent.app
+cp -a ../scripts .
+
+# Create plist file.
+cat << EOT > root/Applications/OGAgent.app/OGAgent.plist
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>BuildAliasOf</key>
+ <string>OGAgent</string>
+ <key>BuildVersion</key>
+ <value>$VERSION</value>
+ <author>$AUTHOR</author>
+</dict>
+</plist>
+EOT
+
+# Add files in the base package.
+( cd root && find . | cpio -o --format odc --owner 0:80 | gzip -c ) > flat/base.pkg/Payload
+
+# Create PackageInfo file.
+cat << EOT > flat/base.pkg/PackageInfo
+<pkg-info format-version="2" identifier="es.opengnsys.ogagent.base.pkg" version="$VERSION" install-location="/" auth="root">
+<payload installKBytes="$(du -k -s root)" numberOfFiles="$(find root | wc -l)"/>
+ <scripts>
+ <postinstall file="./postinstall"/>
+ </scripts>
+<bundle-version>
+ <bundle id="es.opengnsys.ogagent" CFBundleIdentifier="es.opengnsys.ogagent" path="./Applications/OGAgent.app" CFBundleVersion="$VERSION"/>
+</bundle-version>
+</pkg-info>
+EOT
+
+# Compress the scripts folder.
+( cd scripts && find . | cpio -o --format odc --owner 0:80 | gzip -c ) > flat/base.pkg/Scripts
+
+# Create BOM file.
+mkbom -u 0 -g 80 root flat/base.pkg/Bom
+
+# Create Distribution file.
+cat << EOT > flat/Distribution
+<?xml version="1.0" encoding="utf-8"?>
+<installer-script minSpecVersion="1.000000" authoringTool="com.apple.PackageMaker" authoringToolVersion="3.0.3" authoringToolBuild="174">
+ <title>OGAgent 1.1.0</title>
+ <options customize="never" allow-external-scripts="no"/>
+ <domains enable_anywhere="true"/>
+ <installation-check script="pm_install_check();"/>
+ <script>function pm_install_check() {
+ if(!(system.compareVersions(system.version.ProductVersion,'10.5') >= 0)) {
+ my.result.title = 'Failure';
+ my.result.message = 'You need at least Mac OS X 10.5 to install OGAgent.';
+ my.result.type = 'Fatal';
+ return false;
+ }
+ return true;
+}
+</script>
+ <choices-outline>
+ <line choice="choice1"/>
+ </choices-outline>
+ <choice id="choice1" title="base">
+ <pkg-ref id="es.opengnsys.ogagent.base.pkg"/>
+ </choice>
+ <pkg-ref id="es.opengnsys.ogagent.base.pkg" installKBytes="$(du -k -s root)" version="$VERSION" auth="Root">#base.pkg</pkg-ref>
+</installer-script>
+EOT
+
+# Create new Xar application archive.
+rm -f ../../../OGAgentInstaller-$VERSION.pkg
+( cd flat && xar --compression none -cf "../../../OGAgentInstaller-$VERSION.pkg" * )
+