# Creating Software Packages for Mac Computers ## Table of contents 1. [Creating software package with single file](https://www.manageengine.com/desktop-management-msp/help/software_installation/creating_software_packages_for_mac_computers.html#Single_File) 2. [Creating software package with multiple files](https://www.manageengine.com/desktop-management-msp/help/software_installation/creating_software_packages_for_mac_computers.html#Creating_Software_Package_with_Multiple_Files) 3. [Using installation commands](https://www.manageengine.com/desktop-management-msp/help/software_installation/creating_software_packages_for_mac_computers.html#Using_Installation_Commands) 4. [Uninstalling software](https://www.manageengine.com/desktop-management-msp/help/software_installation/creating_software_packages_for_mac_computers.html#Uninstalling_a_Software) 5. [Removing software for all users](https://www.manageengine.com/desktop-management-msp/help/software_installation/creating_software_packages_for_mac_computers.html#Removing_Software_for_All_Users) 6. [Removing software for specific users](https://www.manageengine.com/desktop-management-msp/help/software_installation/creating_software_packages_for_mac_computers.html#Removing_Software_for_Specific_Users) 7. [Removing software for the currently logged-in user](https://www.manageengine.com/desktop-management-msp/help/software_installation/creating_software_packages_for_mac_computers.html#Removing_Software_for_the_Currently_Logged-in_User) 8. [Removing software with preferences](https://www.manageengine.com/desktop-management-msp/help/software_installation/creating_software_packages_for_mac_computers.html#Removing_Software_with_Preferences) For every software that you wish to deploy using Endpoint Central MSP, a package should be created. The package contains the details of the software application, its installation location and the installation/uninstallation commands. The packages once created can be used to deploy software to any number of computers later. The software application, which needs to be deployed to target computers should be uploaded to a particular location. Administrators should specify the HTTP path while creating a software package. **Note:** Installables can be uploaded only in `.dmg` format. If you want to upload the installable, which is in **.pkg / .mpkg / .app** format or upload more than one installable, then it should be compressed and uploaded in **.zip, .tar, .gz, .bz2, .tgz, .tbz or .dmg** format. ## Creating Software Package with Single File Creating a package to install with a single installable file is very easy. Follow the steps mentioned below: 1. Navigate to **Software Deployment -> Add Packages -> Mac**. 2. Specify a **name for the Package** and provide the details of the package for your personal reference. 3. Click **Installation** tab. 4. Click **Browse**, under **Upload Files** upload the installable (software application) that needs to be deployed to the target computers. The installable should be in **.pkg/.mpkg** or **.app** format. You have successfully created a package with a single installation file. ## Creating Software Package with Multiple Files The steps to create a package with multiple files is the same as creating a package with a single installation file. Some software applications like Office would require more than one installation file. In such cases, administrators can upload the installable files in **.zip, .tar, .gz, .bz2, .tgz, .tbz or .dmg** format. These files will be extracted to identify the `.pkg/.mpkg` or `.app` files. ## Using Installation Commands Administrators can use installation commands if they want to customize the installation or change the default installation location. If an installation command is not specified, then the software application will be installed using the default installation commands. The following are examples of how commands can be used to change the default installation location: For pkg: ```bash installer -pkg "/Volumes/Wireshark/Wireshark 1.10.0 Intel 64.pkg -target "/Volumes/Drive1" ``` For app: ```bash ditto "/Volumes/Appcleaner/appcleaner.app" "/TargetPath/appcleaner.app" ``` **Note:** If you are uploading the installable in compressed format, then you can specify only the installable's name in the installation command. ## Uninstalling a Software A software can be removed by specifying the appropriate installed location. If there is more than one file that needs to be removed, then you can add more than one location or use a script for uninstallation. The uninstallation command can be specified under **Advanced Options**. If you write a script of your own, then it is recommended to test it before it is added to the software package. **Note:** Scripts can be uploaded in `.sh` (Shell script), `.scpt` (Apple Script), `.pl` (Perl Script), `.py` (Python Script) formats. ### Removing Software for All Users Remove a software for all users by using the command as mentioned below: ``` "/Library/Application Support/Google/Chrome" ``` The above is a sample command to remove "Google Chrome" for all users. ### Removing Software for Specific Users Remove a software for a specific user by using the command as mentioned below: ``` "/Users/user1/Library/Application Support/Google/Chrome" ``` The above is a sample command to remove "Google Chrome" for a specific user `user1`. ### Removing Software for the Currently Logged-in User Remove a software for the currently logged-in user by using the command as mentioned below: ``` "/Library/Application Support/Google/Chrome" ``` ### Removing Software with Preferences A software can be removed with its preferences. If there is more than one file that needs to be removed, then you can specify more than one location of the file/folder which needs to be removed or use a script for uninstallation. The shell script below is an example for an uninstallation script used to remove a software application with its dependent files from multiple computers. Most vendors provide the script for uninstallation. If you write a script of your own, then it is recommended to test it before it is added to the software package. **Sample Script to Remove Office and its dependent files/folders from multiple computers** ```bash #!/bin/sh osascript -e 'tell application "Microsoft Database Daemon" to quit' rm -R '/Applications/Microsoft Communicator.app/' rm -R '/Applications/Microsoft Messenger.app/' rm -R '/Applications/Microsoft Office 2011/' rm -R '/Applications/Remote Desktop Connection.app/' rm -R '/Library/Application Support/Microsoft/' rm -R '/Library/Automator/*Excel*' rm -R '/Library/Automator/*Office*' rm -R '/Library/Automator/*Outlook*' rm -R '/Library/Automator/*PowerPoint*' rm -R '/Library/Automator/*Word*' rm -R '/Library/Automator/Add New Sheet to Workbooks.action' rm -R '/Library/Automator/Create List from Data in Workbook.action' rm -R '/Library/Automator/Create Table from Data in Workbook.action' rm -R '/Library/Automator/Get Parent Presentations of Slides.action' rm -R '/Library/Automator/Get Parent Workbooks.action' rm -R '/Library/Automator/Set Document Settings.action' rm -R '/Library/Fonts/Microsoft/' rm -R '/Library/Internet Plug-Ins/*SharePoint*' rm -R '/Library/LaunchDaemons/*Microsoft*' rm -R '/Library/Preferences/*Microsoft*' rm -R '/Library/PrivilegedHelperTools/*Microsoft*' OFFICERECEIPTS=$(pkgutil --pkgs=com.microsoft.office*) for ARECEIPT in $OFFICERECEIPTS do pkgutil --forget $ARECEIPT done ```