Further slipstreaming of MS Office

By following the instruction from this post: Deploying MS Office 2011, we will have the MS Office installer pkg, and an prep-package that we created from the last post. Now there are two improvements we want to make.

  • The prep-package adds plists/files to the User Template, the next step would be to add the same files for existing users.
  • Merge the installer pkg and the prep package.

1. Adding ~/Library files for existing users

The prep package is in a .mpkg format and is comprised of a group of .pkg’s and a distribution file. In the PackageMaker project for the package, choose the last component and add a postflight script to it (we’ll look at the contents of this script later). Build the project and then open it in finder. You’ll find that each of the components is its own package. Find the package that contains the postflight file, in the Contents/Resources/ directory add all the ~/Library/ files you need to copy.
1. ~/Library/Preferences/com.microsoft.autoupdate2.plist
2. ~/Library/Preferences/com.microsoft.error_reporting.plist
3. ~/Library/Preferences/com.microsoft.Excel.plist
4. ~/Library/Preferences/com.microsoft.language_registration.plist
5. ~/Library/Preferences/com.microsoft.office.plist
6. ~/Library/Preferences/com.microsoft.outlook.database_daemon.plist
7. ~/Library/Preferences/com.microsoft.PowerPoint.plist
8. ~/Library/Preferences/com.microsoft.Word.plist
9. ~/Library/Preferences/Microsoft/
10. ~/Library/Application Support/Microsoft
Put ~/Library/Preferences/Microsoft in a folder named Library in the Contents/Resources/. Now for the postflight script. The basic jist is that the script has to copy the files from the Resources directory to the /Users/$user/Library/ for each user. The script looks like something like below, edit as needed: #!/bin/sh

# office-setup.sh
#
# Moves ~/Library/ files from pkg to user’s directory
# Created by LITO on 3/14/11.
# Copyright 2011 Columbia. All rights reserved.
dir=$1

for folder in /Users/*
do
/bin/cp $1/Contents/Resources/com.microsoft.autoupdate2.plist $folder/Library/Preferences/
/bin/cp $1/Contents/Resources/com.microsoft.error_reporting.plist $folder/Library/Preferences/
/bin/cp $1/Contents/Resources/com.microsoft.Excel.plist $folder/Library/Preferences/
/bin/cp $1/Contents/Resources/com.microsoft.language_register.plist $folder/Library/Preferences/
/bin/cp $1/Contents/Resources/com.microsoft.office.plist $folder/Library/Preferences/
/bin/cp $1/Contents/Resources/com.microsoft.outlook.database_daemon.plist $folder/Library/Preferences/
/bin/cp $1/Contents/Resources/com.microsoft.outlook.office_reminders.plist $folder/Library/Preferences/
/bin/cp $1/Contents/Resources/com.microsoft.Powerpoint.plist $folder/Library/Preferences/
/bin/cp $1/Contents/Resources/com.microsoft.Word.plist $folder/Library/Preferences/
if [ -d $folder/Library/Preferences/Microsoft ]
then
if [ -d “$folder/Library/Preferences/Microsoft/Office 2011” ]
then
/bin/cp $1/Contents/Resources/Library/Microsoft/Office*2011/* $folder/Library/Preferences/Microsoft/Office*2011/
/bin/chmod -R 775 $folder/Library/Preferences/
/bin/chown -R $USER $folder/Library/Preferences/

fi
else
/bin/mkdir $folder/Library/Preferences/Microsoft
/bin/mkdir “$folder/Library/Preferences/Microsoft/Office 2011”
/bin/cp $1/Contents/Resources/Library/Microsoft/Office*2011/* $folder/Library/Preferences/Microsoft/Office*2011/
/bin/chmod -R 775 $folder/Library/Preferences/
/bin/chown -R $USER $folder/Library/Preferences/
fi
if [ -d “$folder/Library/Application Support/Microsoft” ]
then
if [ -d “$folder/Library/Application Support/Microsoft/Office” ]
then
if [ -d “$folder/Library/Application Support/Microsoft/Office/User Templates” ]
then
/bin/cp $1/Contents/Resources/Microsoft/Office/User*Templates/* $folder/Library/Application*Support/Microsoft/Office/User*Templates/
/bin/chmod -R 775 $folder/Library/Application*Support/*
/bin/chown -R $USER $folder/Library/Application*Support/*
fi
fi
else
/bin/mkdir “$folder/Library/Application Support/Microsoft”
/bin/mkdir “$folder/Library/Application Support/Microsoft/Office”
/bin/mkdir “$folder/Library/Application Support/Microsoft/Office/User Templates”
/bin/cp $1/Contents/Resources/Microsoft/Office/User*Templates/* $folder/Library/Applications Support/Microsoft/Office/User*Templates/
/bin/chmod -R 775 $folder/Library/Application*Support/*
/bin/chown -R $USER $folder/Library/Application*Support/*

fi
done

exit 0

note: It’s important to chmod 775 the folders otherwise the user will not have read rights and this will all be for naught.

2. Merging installer and prep packages

I used OfficeForMac’s help page on distribution.dist to execute my deployment. The first step was to open up the Office 2011 package and the prep package. move the packages from the prep package to the Office pkg (the directory in the package is /Contents/Packages). I would make a directory in Contents/Packages called user_lib and stash the prep packages there. Once the packages are in place, you want to edit Contents/distribution.dist
There are three types of edits, and it’s best to start from the bottom up. At the bottom you’ll find package references that tell you where to find the package, the size of the package, an user defined id (which is used in the next step), version and other actions. An example would be: <pkg-ref id="com.microsoft.office.en.commsms-1.pkg.14.0.0" version="14.0.2" installKBytes="123904" auth="Admin" onConclusion="None">file:./Contents/Packages/user_files/microsoft-1.pkg</pkg-ref>
Set the file’s path to the location of your package. Then set the installKBytes if you want, it’s not necessary. Set the pkg-ref id to something descriptive and brief, as it’ll be used in the next step. A package reference needs to be created for every package.
Next we have to add a choice to install our prep packages. Above the pkg-ref’s are the choices, add a choice like the one below:<choice id="user-lib" title="userlib-title" description="userlib-description" tooltip="userlib-tooltip" start_selected="true" start_enabled="true" start_visible="true">
<pkg-ref id="com.microsoft.office.en.commsau2.pkg.14.0.0"></pkg-ref>
<pkg-ref id="com.microsoft.office.en.commsrpt.pkg.14.0.0"></pkg-ref>
<pkg-ref id="com.microsoft.office.en.commsexcel.pkg.14.0.0"></pkg-ref>
<pkg-ref id="com.microsoft.office.en.commslang.pkg.14.0.0"></pkg-ref>
<pkg-ref id="com.microsoft.office.en.commsoff.pkg.14.0.0"></pkg-ref>
<pkg-ref id="com.microsoft.office.en.commsoutdb.pkg.14.0.0"></pkg-ref>
<pkg-ref id="com.microsoft.office.en.commsoutrem.pkg.14.0.0"></pkg-ref>
<pkg-ref id="com.microsoft.office.en.commspp.pkg.14.0.0"></pkg-ref>
<pkg-ref id="com.microsoft.office.en.commsword.pkg.14.0.0"></pkg-ref>
<pkg-ref id="com.microsoft.office.en.commsms.pkg.14.0.0"></pkg-ref>
<pkg-ref id="com.microsoft.office.en.commsms-1.pkg.14.0.0"></pkg-ref>
</choice>

In this format, the first thing to do is set the choice id, title and description. It’s also advisable to set the start_visible to false. The choice id will be referenced above, so it should be something short but descriptive. Within the <choice> and </choice> we add the packages that will be installed for the choice, identified by their pkg-ref ids.
After that is done, we want to add a line choice for our new choice, this is done in the choices-outline section by adding a line like: <line choice="user-lib"></line>
Now our install package will install office and also install the ~/Library files for all users and the user’s template. This package is easy to push out through ARD or synctool via the installer command making it totally silent.

Advertisements

Deploying MS Office 2011

In terms of deployment, there has been little change between MS Office 2008 and MS Office 2011. Firstly, I use DeployStudio to deploy the initial install of Office, otherwise OS X’s builtin installer command also does the trick. However, after Office has been installed, you don’t want users to get all the pesky notifications about activating their copy or downloading updates and such. If you use OS X Server, you can follow the advice from Managing OSX. Otherwise, you can use the same idea and build a package that deploys all the same plists. This method requires access to one machine with Office 2011 installed and setup as you’d like. In PackageMaker, add the following files to your package:

  1. ~/Library/Preferences/com.microsoft.autoupdate2.plist
  2. ~/Library/Preferences/com.microsoft.error_reporting.plist
  3. ~/Library/Preferences/com.microsoft.Excel.plist
  4. ~/Library/Preferences/com.microsoft.language_registration.plist
  5. ~/Library/Preferences/com.microsoft.office.plist
  6. ~/Library/Preferences/com.microsoft.outlook.database_daemon.plist
  7. ~/Library/Preferences/com.microsoft.PowerPoint.plist
  8. ~/Library/Preferences/com.microsoft.Word.plist
  9. ~/Library/Preferences/Microsoft/

The target directory for these files is: /System/Library/User Template/English.lproj/Library/Preferences/
You also want to add ~/Library/Application Support/Microsoft and set it’s target directory to /System/Library/User Template/English.lproj/Library/Application Support.

This way, when a new local user is created, their Office 2011 preferences are set right off the bat.