| # Add icons to the system icons |
| XDG_ICON_RESOURCE="`command -v xdg-icon-resource 2> /dev/null || true`" |
| if [ ! -x "$XDG_ICON_RESOURCE" ]; then |
| echo "Error: Could not find xdg-icon-resource" >&2 |
| exit 1 |
| fi |
| for icon in @@LOGO_RESOURCES_PNG@@; do |
| size="$(echo ${icon} | sed 's/[^0-9]//g')" |
| "$XDG_ICON_RESOURCE" install --size "${size}" "@@INSTALLDIR@@/${icon}" \ |
| "@@PACKAGE@@" |
| done |
| |
| # Update cache of .desktop file MIME types. Non-fatal since it's just a cache. |
| update-desktop-database > /dev/null 2>&1 || true |
| |
| # Updates defaults.list file if present. |
| update_defaults_list() { |
| # $1: name of the .desktop file |
| |
| local DEFAULTS_LIST="/usr/share/applications/defaults.list" |
| |
| if [ ! -f "${DEFAULTS_LIST}" ]; then |
| return |
| fi |
| |
| # Split key-value pair out of MimeType= line from the .desktop file, |
| # then split semicolon-separated list of mime types (they should not contain |
| # spaces). |
| mime_types="$(grep MimeType= /usr/share/applications/${1} | |
| cut -d '=' -f 2- | |
| tr ';' ' ')" |
| for mime_type in ${mime_types}; do |
| if egrep -q "^${mime_type}=" "${DEFAULTS_LIST}"; then |
| if ! egrep -q "^${mime_type}=.*${1}" "${DEFAULTS_LIST}"; then |
| default_apps="$(grep ${mime_type}= "${DEFAULTS_LIST}" | |
| cut -d '=' -f 2-)" |
| egrep -v "^${mime_type}=" "${DEFAULTS_LIST}" > "${DEFAULTS_LIST}.new" |
| echo "${mime_type}=${default_apps};${1}" >> "${DEFAULTS_LIST}.new" |
| mv "${DEFAULTS_LIST}.new" "${DEFAULTS_LIST}" |
| fi |
| else |
| # If there's no mention of the mime type in the file, add it. |
| echo "${mime_type}=${1};" >> "${DEFAULTS_LIST}" |
| fi |
| done |
| } |
| |
| update_defaults_list "@@PACKAGE@@.desktop" |
| |
| # This function uses sed to insert the contents of one file into another file, |
| # after the first line matching a given regular expression. If there is no |
| # matching line, then the file is unchanged. |
| insert_after_first_match() { |
| # $1: file to update |
| # $2: regular expression |
| # $3: file to insert |
| sed -i -e "1,/$2/ { |
| /$2/ r $3 |
| }" "$1" |
| } |
| |
| # If /usr/share/gnome-control-center/default-apps/gnome-default-applications.xml |
| # exists, it may need to be updated to add ourselves to the default applications |
| # list. If we find the file and it does not seem to contain our patch already |
| # (the patch is safe to leave even after uninstall), update it. |
| GNOME_DFL_APPS=/usr/share/gnome-control-center/default-apps/gnome-default-applications.xml |
| if [ -f "$GNOME_DFL_APPS" ]; then |
| # Conditionally insert the contents of the file "default-app-block" after the |
| # first "<web-browsers>" line we find in gnome-default-applications.xml |
| fgrep -q "@@MENUNAME@@" "$GNOME_DFL_APPS" || insert_after_first_match \ |
| "$GNOME_DFL_APPS" \ |
| "^[ ]*<web-browsers>[ ]*$" \ |
| "@@INSTALLDIR@@/default-app-block" |
| fi |
| |
| # This function performs the setup for the chrome management service process. |
| # It creates a new chromemgmt group, creates the signing key file, and updates |
| # permissions for both the signing key file and the binary. |
| chrome_management_service_setup() { |
| if [ ! -f "$DEFAULTS_FILE" ]; then |
| return |
| fi |
| |
| if ! grep -q "install_device_trust_key_management_command=true" \ |
| "$DEFAULTS_FILE"; then |
| return |
| fi |
| |
| getent group chromemgmt > /dev/null || groupadd chromemgmt |
| |
| chgrp chromemgmt "@@INSTALLDIR@@/chrome-management-service" |
| chmod 2755 "@@INSTALLDIR@@/chrome-management-service" |
| |
| mkdir -p "@@ENROLLMENTDIR@@" |
| SIGNING_KEY_FILE="@@ENROLLMENTDIR@@/DeviceTrustSigningKey" |
| if [ ! -e "$SIGNING_KEY_FILE" ]; then |
| touch "$SIGNING_KEY_FILE" |
| fi |
| |
| chgrp chromemgmt "$SIGNING_KEY_FILE" |
| chmod 664 "$SIGNING_KEY_FILE" |
| } |
| |
| chrome_management_service_setup |