ThinApp Microsoft Office 2010

A customer recently asked me to deploy Microsoft Office 2010 (KMS Licensed) to their 64 bit Windows 7 VDI desktops and so, after a little work, I was able to get a working ThinApp package. As an added difficulty, we are using a Floating Pool and so have redirected the users’ %appdata% to a file share on an SMB2 NAS device (so we’ve disabled SMB2 in Windows 7 until a ThinApp release where this doesn’t cause issues). Here are the steps that I followed, mostly taken from the excellent blog entry that VMware put together (http://blogs.vmware.com/thinapp/2011/02/quick-start-guide-for-deploying-office-2010-using-thinapp-461.html). I began this procedure with ThinApp 4.6.1, moved to 4.6.2 and have now run it with 4.7.

1) Prepare a clean capture machine. I use 32 bit Windows XP for my capture machine and have come across licensing issues when capturing on Windows 7 32 bit.
2) Perform the prescan
3) Install Microsoft Office, selecting a Custom Install and (people recommend ensuring that it doesn’t activate; I haven’t seen problems with an activated Office install but I’m sure that they can happen).
4) Ensure that all options are set to “Run From My Computer” and complete the install
5) Install Project and/or Visio the same way, if anyone in your environment will use these applications. Right now, there is a bug with the Office Software Protection Platform service that prevents Office applications from multiple ThinApp packages from running concurrently (or a ThinApp packaged Office from running when Office is natively installed).
6) Run an Office application (I usually use Word) and disable updates.
7) Perform the postscan and name the project accordingly. There’s no need to build the project yet.
8) Clean up the project capture directory. There’s a lot of files that, as far as I can tell, are not needed in the package. A build of all captured files is about 4.2 GB large (without compression); after this cleanup process, that size is shrunk to about 1.5 GB (without compression). Here is the cleanup process that I followed:
a. First, you need to make a backup of some executables that the applications reference as icon repositories, otherwise your file icons within the package will not display correctly (that took me a while to figure out!). I did this backup with the following Robocopy command (make sure that your source path has quotes around it and you may need to rename %systemroot% since that’s a system variable):
i. Robocopy “C:\temp\Installer” /IF *icons.exe /IF *icon.exe /S /FP
b. Second, I copied all of the fonts from the package’s %Fonts% directory and installed them natively in my parent image (since every desktop is entitled to MS Office). Loading fonts can take a while, so this step allows me to delete the %Fonts% directory and improve the package’s load time.
c. Once those steps were completed, I deleted the following folders:
i. %Fonts%
ii. %Cookies%
iii. %History%
iv. %Internet Cache%
v. The contents of %drive_C%\MSOCache\Users\
vi. The contents of %systemroot%\Installer
d. I then copied the files/folders that were copied in step 8.a back into %systemroot%\Installer (so that those *icons.exe files will be back where the office applications expect them to be)
9) As per VMware’s instructions, you’ll want to make two registry edits. Just append the specified text to the appropriate registry file:
a. HKEY_CURRENT_USER.txt
i. isolation_writecopy HKEY_CURRENT_USER\Environment
Value=ALLUSERSPROFILE
REG_SZ~%Common AppData%
b. HKEY_LOCAL_MACHINE.txt
i. isolation_full HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Windows Search\Preferences
Value=PreventIndexingOutlook
REG_DWORD=#01#00#00#00
10) You should also move the OfficeSoftwareProtectionPlatform folder from %drive_C%\Documents and Settings\All Users\Microsoft\ to %Common AppData%\Microsoft\
11) Edit your Package.ini file to include whatever launch restrictions you need. I’ve created Active Directory groups for Visio and for Project and put “PermittedGroups” entries under the Entry Points for each of those applications.
a. I like to include the “ProcessExternalNameBehavior=Original” line in the [BuildOptions] section so that I can see the specific processes that are running (instead of a generic Microsoft Word 2010.exe process name).
b. I suggest that you don’t enable the Wow64=0 line, as that seems to prevent the ThinApp from creating print jobs.
12) Build your package.

There are a few Group Policy settings that I’ve found helpful in my desktop pool, specific to Office. You may need to install the Office 2010 Administrative Template files from Microsoft in order to set these policies. They can currently be downloaded from http://www.microsoft.com/download/en/details.aspx?id=18968, but we all know how Microsoft likes to move things around.
1) It can take a bit for Group Policy to apply to a desktop, especially if you are doing any Folder Redirection. For this reason, I’ve disabled Asynchronous Logon Scripts. This adds about 30 seconds to my logon (which is unfortunate), but ensures that all Group Policy is applied successfully to the desktop. I’m experimenting with methods to allow Asynchronous Logon Scripts, but for now they’re disabled (this is primarily for my %appdata% folder redirection)
a. Enable: Computer Configuration\Policies\Administrative Templates\System/Logon\Always wait for the network at computer startup and logon
2) Even though Outlook will save the user’s settings to their persistent Sandbox, we’d still rather not harass them for configuration prompts when they first log in. You can set Outlook to silently auto-configure based on the currently logged in user with the following policy:
a. Enable: User Configuration\Policies\Administrative Templates\Microsoft Outlook 2010/Account Settings/Exchange\Automatically configure profile based on Active Directory Primary SMTP address
3) Outlook can have some performance issues if it is maintaining a local OST file (especially if that OST file is redirected to a file share, which wasn’t even supported in older versions of Outlook and is only tentatively supported now). If nothing else, using a floating desktop pool will require that the system recreate its OST file every time the user logs in, which can be a time and resource intensive operation. I disable Cached Exchange Mode with the following policies:
a. Enable: User Configuration\Policies\Administrative Templates\Microsoft Outlook 2010/Account Settings/Exchange\Do not allow an OST file to be created
b. Disable: User Configuration\Policies\Administrative Templates\Microsoft Outlook 2010/Account Settings/Exchange/Cached Exchange Mode\Cached Exchange Mode
c. Disable: User Configuration\Policies\Administrative Templates\Microsoft Outlook 2010/Account Settings/Exchange/Cached Exchange Mode\Use Cached Exchange Mode for new and existing Outlook profiles

Update (5/2012): I noticed that the icon for PowerPoint is not preserved by step 8.a.  I later made a post specifically about File Type Icons not Displaying in a ThinApp, please reference that post for details about how to discover exactly which files are in use.  If you're feeling lazy, just skip step 8.c.vi and leave all of those Installer folders there.  It'll add a few hundred megs to your package size, but you'll have all of your icon files without needing to dig around.

Comments

  1. Hi Jason,
    I had done all the steps but i am getting the license validation fail error.The only difference is that i have used Win 7 as the host computer.Do you think this is the problem?

    ReplyDelete
  2. When you say Win 7 as a host computer, do you mean for your capture box? I did some experimentation with capturing on 32 bit Windows 7 and believe that I had the same issue. I didn't dig into it at the time, but I'd guess that the licensing software is installed differently on Windows 7 vs. Windows XP, as the Win7 host already has KMS services built into it. That means that the captured package might have hooks into that capture box's KMS, rather than using a self-contained version that would get installed into XP.

    Sorry, I don't have a solution other than to use a Windows XP Capture box. I've heard that Office 2013 is much more virutalization friendly, but I've been working predominately with Unidesk for application delivery lately and so haven't had to invest much time into ThinApp.

    ReplyDelete
  3. Sorry for troubling you Man,but the Problem was in that I Was using Thinapp 4.6.0 which is actually not recommended on their's site and anywhere else.
    Last Night,I did the build with Thinapp [4.7.3] and that also in Win 7 and I had no issues. Word,Onenote,Powerpoint and Excel, everything's working fine.

    ReplyDelete
  4. Thanks for the followup info, especially that Win 7 32 bit can be successful with the latest version of ThinApp! Do you know if the OSPP issues with Office and Visio/Project have been resolved? When I wrote this post (my goodness, almost a year ago!), Visio and Project had to be included in the main package along with the rest of Office, otherwise there'd be licensing issues (you could use Permitted Groups on their entry points to still restrict who could access what). Do you know if that's still a concern?

    ReplyDelete
  5. No, I think's the issues are resolved cuz I have only and only included Word,OneNote,PowerPoint and Excel in the Package..No Visio,no Project..and even No Outlook..I only needed the four to perform and they are working fine.

    ReplyDelete
  6. Hello,
    First, congrats for the well-done and working tutorial. Everything seems pretty fine. However, I am experiencing a problem with the outlook profile creation. The first time the user runs Outlook he goes successfully through the wizard and afterwards an error is shown: "Cannot start Microsoft Outlook. Cannot open the Outlook window". Tried the suggested fixes with /resetnavpane switch to no avail. Tried the thinapp with admin account and I can see after initial process creation it is searching for MSOCache\*\StandardWW.msi..
    I thought selecting run all from my computer would deal with this, but apparently not.

    I will do some more tests with leaving the folder inside the project directory and report the result.

    The setup is: Windows 7 SP1 Professional 32 bit, ThinApp 4.7.3. Office 2010 SP1 KMS 32 bit. And yes, the pool is floating.

    ReplyDelete
    Replies
    1. Please let us know the results. I've always used Group Policy to automatically complete the wizard based on the user's AD account and haven't seen this issue. Then again, it doesn't sound like the wizard is really the problem that you're coming up against though. I think that you're on to the right track with leaving that file in the package. Since you're using a floating pool, I'd strongly recommend looking at using GPOs to optimize the configuration, as (unless you're using Persona Management or some other tool to make profiles persist) the users will need to configure Outlook every time they log in since they'll always be on a fresh computer.

      Delete
  7. Hi,

    I'm currently processing your explanation. I've noticed the powerpoint is named pptico.exe so you need to add another line *ico.exe /IF and a destination to write to. Mine was with specs:
    Windows 7 RTM 32bit ENG and Office Professional Plus 2010 Dutch 32bit:
    Robocopy "C:\Windows\Installer\{90140000-0011-0000-0000-0000000FF1CE}" “C:\temp\Installer” /IF *icons.exe /IF *icon.exe *ico.exe /IF /S /FP

    fyi When I published the version over the network to a local computer to start from, the desktop icons of Office where gone. It did not had problems with the start menu, but even with reboot and cleariconcache.db I could not get office desktop icons. Now i'm packinging to test as we speak.
    Also this following article can be of use for other parts:
    http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1022287

    ReplyDelete

Post a Comment

Sorry guys, I've been getting a lot of spam recently, so I've had to turn on comment moderation. I'll do my best to moderate them swiftly after they're submitted,

Popular posts from this blog

PowerShell Sorting by Multiple Columns

Clone a Standard vSwitch from one ESXi Host to Another

Deleting Orphaned (AKA Zombie) VMDK Files