Running Office 32bit with 64bit

I recently migrated to the 64bit edition of Microsoft Office 2010. My main reason for doing this was that I wanted to make use of the RAM in my machine with PowerPivot, but it certainly didn’t come without a bit of pain. The most notable parts there were that I had to convert a bunch of 32bit API calls in my VBA to 64bit compliant calls while preserving 32bit compatibility for the other machines in my office. Despite my initial intimidation here however, some good friends helped me out and I was up and running within a few hours, and I know believe I understand how to migrate the rest of my code easily. (I may post on that in the near future.)

One challenge I did face though was that you cannot run Office x64 on the same machine as Office x86 (32 bit). To install Office x64 you must uninstall any 32bit version of Office programs first. This means Visio, Project, Office 2007, Office 2003, etc…

My challenge with this is that I teach courses and like (need) to have multiple versions of Office installed so that I can teach in the appropriate versions. I could use a full blown virtual machine, but the problem here is that I find it inconvenient when trying to teach. I can’t flip back and forth between the app and my presentation easily, my presenter mouse doesn’t work in the VM… it just doesn’t work.

So when I installed Office x64, I was a little disappointed. I really wanted to run it side by side with Office 2003 and 2007, but I couldn’t.

But then, in a discussion with one of my staff yesterday, we ended up chatting about Windows XP mode in Windows 7. It IS a virtual machine, but it allows you to run an app installed in the VM as a program from the host (Windows 7) desktop. Here’s a shot out of my start menu of the applications I installed in the Windows XP Mode VM:

So this is pretty cool. I’ve been able to have Excel 2010 x64 open and running on my laptop, and I was able to successfully launch Excel 2003, Excel 2007 and Excel 2010 (32 bit) all together.

The Windows XP mode apps all run on the virtual machine, so they are segregated from my host operating system which makes this possible. I also installed SmartIndenter and MZTools in the VM, and those both show up in the VBE for the apps when I launch it.

I’m really impressed with this. Granted it’s far from perfect application level virtualization, but it allows me to do what I need. All the issues I mentioned above are solved with this. I can run all the versions of the app together, and they seem to run seamlessly.

If you are running Windows 7 and want to check this feature out, here’s the link: http://www.microsoft.com/windows/virtual-pc/download.aspx

My VMWare Setup Steps

I thought I’d written this down somewhere, but apparently not, so I figured I’d make a blog post out of it.

Despite the fact that it’s been a long time since I’ve blogged, I don’t think it’s a secret that I’m a fan of virtualization. The other day, after posting on some VBAX threads, I started feeling that I needed an Excel 2003 install to test some things. Now I’ve detailed the steps I used to set up an Office Sandbox before, but what I really wanted here was the ability to run multiple VM’s at once. So it was obviously time to recreate my environment.

This time, rather than set up a single virtual machine with all kinds of snapshots on it, allowing me one testing ground at a time, I decided to go with linked clones in VMWare. This allows me to set up one main Windows XP hard drive, then spin off just a linked clone for each Office installation. They’re separate, can run at the same time, and I don’t need to create a large hard drive for each image. Each linked clone expands to incorporate the office install, but that’s about it.

In addition, I also set up a Windows 2003 master and am currently in the process of setting up a domain controller and a file server. This will let me fool around with some features that require a domain, and also means that I can set up a file structure similar to the office. I’m hoping that I won’t have to deal with any more of those “your network add-ins aren’t available right now” messages.

At any rate, here’s the steps I went through to create it using VMWare 6.5.

Initial VM creation

  1. I made a new VM and installed Windows XP. Nothing really magical there (at least not in my opinion)
  2. Installation of VMWare Tools is also essential

Patching, patching and more patching

  1. I installed all the various service packs and windows updates. Tons of them. Then more.
  2. Next I installed Microsoft Update (after all, I plan on installing Office here) then checked for even more updates
  3. I also installed some optional updates that I thought I might need (.NET 3.5, etc…)
  4. Check for more windows updates
  5. Basically keep checking for Windows updates until there are none left.

Performance Tuning

  1. Download and install BGInfo so that the desktops get tagged with their system info.
    1. Download it from http://technet.microsoft.com/en-us/sysinternals/bb897557.aspx.
    2. I create a folder in C:\Program Files\BGInfo and extract the pieces there
    3. Right click the Start Menu and Explore all Users.  Drill into the startup for all users and place a shortcut to BGInfo.exe there
    4. Modify the “Shortcut to BGInfo” in the statup menu to read “BGInfo”, go into it’s properties and append /timer:0 to the target path
    5. Trash the zip file as it’s no longer required.
  2. Install any programs I know I’ll need in all machines (PDFCreator)
  3. On Windows Server 2003 uninstall the enhanced browing security.  (Control Panel–>Add/Remove Programs–>Add/Remove Windows Components–>Uncheck Internt Explorer Enhanced Security Configuration.)
  4. If space and performance is a concern, uninstall any other unnecessary windows components
  5. Go to Internet Explorer and set the Home Page to something I’ll use.
  6. Empty the recycle bin
  7. Run disk cleanup (StartàAll ProgramsàAccessoriesàSystem ToolsàDisk Cleanup) and clean up EVERYTHING
  8. Go into System Properties (Right click My Computer in the Start Menu) and adjust the following
    1. Turn off System Restore (System Restoreàcheck the box)
    2. Adjust for Best Performance (AdvancedàPerformanceàSettingsàAdjust for Best Performance)
    3. Drop the page file (AdvancedàPerformanceàSettingsàAdvancedàChangeàNo Paging File)
  9. Restart the computer (to confirm the page file deletion)
  10. Run defragmentation in the OS until it is almost instant complete
  11. Go back into system properties and create a page file. I set the initial and max size to the Recommended value at the bottom of the page.
  12. Shut down the guest OS.
  13. Run the VMWare disk defragmentation
  14. Uncheck all the “Connect at startup” settings for the floppy drive, CD ROM & Bluetooth

Preparing for next step

  1. With the machine shut down, create a snapshot. I label mine “Golden Master” and put in the notes what date it is patched to.

Creating the Office PC’s

  1. From the VMWare VM menu, I chose Clone, and set up a Linked Clone from the snapshot
  2. Install Office
  3. Install utilities like freewheel, mztools, smartindenter. The reason I didn’t do these earlier is that some require office be installed first, and some aren’t necessary (Freewheel) in later office versions.
  4. Patch it (until no more patches show up)
  5. Run defragmentation in the OS until it is almost instant complete
  6. Shut down the VM
  7. Run the VMWare disk defragmentation
  8. With the machine shut down, create a snapshot. This one I’ll call Office XXXX base image, patched to yyyy-,mm-dd

At this point I’m set up to use that VM. It may sound like a lot of work, but the bonus is that if I can roll back to a fresh office install at any time. Likewise, I can spin off a new linked clone from my Golden Master at any point in time too.

You’ll notice that I don’t have any antivirus software on the VM’s. This is because I’m not using these for production, just for testing. I don’t really want to have huge AV downloads every time I want to make a quick test, and I don’t plan on surfing the net on these machines.

As far as Windows servers, I basically follow the same steps. Once I’ve got the base OS installed, patched and tuned, then I snapshot the golden master, create the linked clones, and off I go.

Windows Update Rant

This morning I received a few windows updates that really made me angry. It wasn’t the updates per se, but rather how they were stuffed into my system. Here’s what happened…

Like every morning, when I got to work I booted up my laptop running Windows Vista. I then launch VMWare Workstation, and started up my Windows XP workstation that I use for my day job.* So far so good.

*This may sound strange, but I test a lot of different things, including Vista, trying to find what works with our system. I wouldn’t normally run such a heavy host OS, but I’m testing it out at home to ensure that I know how to use it once I decide to make it mainstream at Fairwinds. The fact is that some of our main applications STILL don’t work on Vista properly, so I ported my old physical Win XP Pro machine to a VM, and I use that daily to do my work.

Now, the guest OS (Windows XP) was running a little slow at first, but that’s not unusual at all. It takes some time to check for windows updates, and do the other normal startup routines for programs I have installed. I didn’t really think anything of the speed until I was finally prompted with that nice little windows update message. You know the one… “I’ve installed updates for you, and I’m going to reboot your system in 30 seconds.” The only options you have are essentially, “Okay, do it now then” or “remind me every five minutes that I’m going to reboot your system.”

I was working on something important, so I said “Restart Later.” All was fine for about 1 minute. Next thing I know, my Windows XP session shuts off, VMWare is telling me something, and my Vista OS starts to shut down!

Now, I have a pretty decent system here, running a Core 2 Duo 2.2GHz processor, with 4GB of RAM. There is nothing slow about this machine, and yet it took 15 minutes for the host to shutdown, install updates, reboot, configure updates, and get back logged in. Grrrr… The reason I said Later is that I’m busy! The problem, of course, was that the Vista host had the same “Do or die” message, only I didn’t see it as my Windows XP guest OS was running in full screen mode.

At any rate, after rebooting I opened up VMWare and found that it had suspended my Windows XP machine. Great! I clicked to start it up, then turned to other tasks. (I had a couple of thin clients to configure for users.) I figured I had a couple of minutes, as it does take some time for VMWare to resume from a suspended state. But by the time I turned back to it, the guest was shutting down! Arrrgggghhh! I had again missed the “Piss off” prompt! Another 10 minutes, give or take, until I could get back in to do any work on my Windows XP system!

All in all, I was not impressed, and immediately shut off the “Auto Download and Apply Updates” feature in both the guest and the host.

I suppose that you could argue that I should have known better, and done this ages ago, but I don’t really feel that way. I try to adhere to good practices as best I can, and one of those is applying Windows Updates. In addition, look at what Windows own OneCare program says when you flip the settings to “Download and Notify me to install”:

onecare.png

What the hell? So because I’m taking more control of my system, it’s “At Risk”, and I have to stare at a little red icon in my system tray? This is a bit of a misrepresentation to me.

I’m not only choked about the time I lost today, although that does play in. No… it’s because this contravenes several best practice points in programming, in my opinion. What if I’d been working on my Accpac 6.0 database that I still use? If I were posting, and VMWare suspended my desktop in the middle of it, the database would have been corrupted. The last time I had a corrupted database, back in 2000 or so, it cost me over $1000 to get it fixed. I don’t even know if I could find a tech to do it now, as the software is supposedly “obsolete”.

Why, Microsoft, do you feel so comfortable shutting down your clients systems without any regard as to what they are doing? The fact that I missed my host’s message is irrelevant. Besides the fact that virtualization is a fact now, it could have just as easily been an issue if I were on the phone with my back turned to the computer. This is blatantly wrong, and WILL cost at least one customer some corrupted data at one point.

This is a serious issue that needs to be rectified immediately. An OS patch should NEVER force a reboot without warning. If you want to pop up a message that strongly recommends a reboot after installing, then fine, but don’t force it. Even keep reminding me every 5 minutes that I should reboot to apply the updates, fine. Again, DO NOT FORCE IT! Or try things the other way, and warn me that a reboot will be needed once the update is applied BEFORE you install it. At least that way I’m not caught in the middle of things.

Ultimately, I take a lot of responsibility for my systems, running firewalls, antivirus software and even tape backups. If I delay an update and get hacked in some way, then that’s my problem, and THAT is a risk that I’m willing to take. Risking my data is definitely not something I should have to do.

I also have a hard time believing that any update is critical enough that it warrants such a blatant disregard for my system. The point behind these is to protect, not risk the clients system. What’s more is that the majority of updates are released on “Patch Tuesday”, once per month. So what’s another 4 hours?

I am far from impressed with this cavalier attitude to my work schedule and data.

VMWare Workstation 6.5 Beta Released

If you’ve been waiting to get into the VMWare game, now could be a good time.  VMWare is offering a beta of the 6.5 version of Workstation.  (You don’t have to buy anything, but you do need to register with them to do it.)

I haven’t tried 6.5 yet (I run Workstation 6.0), but I certainly plan on giving it a go.  The only issue I have is that I have a quarter end going on right now… since I run my work PC in a workstation VM, and my deadline for getting financial statements out is this week, installing Beta software is a risk I can’t take.

For what it’s worth, Microsoft does have a free version of their “Virtual PC” available, but it’s years behind VMWare at this point.  I see that workstation 6.5 now supports 3D graphics inside a VM (looking forward to trying that out.)  Microsoft also can’t support USB devices inside their VM’s, but VMWare can.  (That’s reason enough to pay for VMWare right there, IMO.)  I also find VMWare’s UI MUCH better than the VPC one as well.

I can’t wait to try out 6.5, and will almost certainly post more on this once I do.  :)

Cool things with VMWare

I’m sure that Dennis, being a power user of VMWare, can list a hundred things, but I’m going to talk about a couple. One that is, IMHO, the number one reason developers should use it, and another that I experimented with briefly tonight.

Snapshots

This is a very cool feature, and the concept works like this…

  • Install an operating system in a VMWare disk
  • Snapshot it
  • Install an application on the virtual OS
  • Snapshot it

Now, the reason this is cool is twofold.

First, you don’t have to consume the space on your hard drive for another full installation of the base OS. (And feel free to correct me if I’m wrong on this.) So if I decided to install Excel 2003 on my snapshot, for example, I’m increasing my storage needs by the size of the Excel install, and not the another full copy of the base OS as well.

Second, you can revert to a prior snapshot and branch off at any point. It also gives a really nice little tool that gives you a visual of what you have. Here’s my current testing platform snapshot tree:

VMWare snapshot tree

As you can see, I have a Windows XP install, and a few different options to choose from. In the current view, I was testing some PDFCreator stuff on Office 2003. I could just as easily flip back to the base XP image and install Office XP or 97 if I needed to test something on that platform. I don’t need to reinstall a full clean OS… I already have one to start from. So I can get my install up an running very quickly.

This is an incredibly robust feature in VMWare, and SO easy to use. The only hints that I would give you if you’ve never done this before are these:

  • Shut down your virtual machine before you take the snapshot. You CAN snapshot a running VM, but it then creates huge files as it has to save the running state of the machine. They are way more trimmed if the machine is off.
  • To get the best performance now and in snapshots based off earlier snapshots, always defragment the image inside the VM and shrink the disk before snapshotting. This keeps the image as small and efficient as possible.

While it is possible to do a similar thing using Microsoft’s Virtual PC, (hereafter called VPC,) it’s not nearly as easy to set up, nor to comfortably manage. VMWare has this set up so that it is intuitive, and easy to read. With VPC, in my experience, it’s really easy to lose track of what disks are what, as there is no UI that tells you.  If you are using Virtual PC though, I linked to an excellent article on this subject in my first post about virtualization about a year ago.

Pre-built images

One of virtualization’s big strengths is that it moves operating systems into a hardware agnostic environment. Basically, this means that VMWare/VPC translates between your host OS’s drivers and the generic drivers needed in the VM. This allows for disaster recovery, as you only need to back up your VM, and you can reload it on any machine that has your virtualization (VMWare or VPC) software on it. It also allows for the next thing I want to talk about… pre-built images.

Last week, I saw a page (can’t remember where) that pointed to a product called Deki Wiki. The only remarkable thing to me at the time was that it was provided in a VMWare image for you to download and use immediately. I kind of remarked at the time that it was a pretty neat concept. Well… yesterday at work it occured to me that a wiki might be an interesting tool to build procedure manuals at work. If everyone in the company could be set up with rights to create, search and update procedures for tasks, maybe we’d stand a chance of keeping our docs up to date. I figured I’d download it and give it a try.

The download was pretty big, but once in an unzipped, all I had to do was double click the vmdk file. It launched a linux server, I opened up my web browser, put in the IP, and away I’m playing with their wiki software. Pretty cool really. I didn’t need to learn a thing about linux, didn’t have to install a new program on my website, or anything.

It’s not like this is the only one either, but it is the first open source project I came across. For MSDN and TechNet subscribers, we can download pre-built Virtual PC images of servers and such as well. And, of course, VMWare has a way to port Virtual PC images to VMWare workstations.

I’m curious if any other VMWare users out there have picked up any open source projects like this?

Virtualization

Over the past year and a bit, I’ve begun playing with Virtualization on my PC. The reason was mainly because I got very tired of having to rebuild my OS when I inevitably got it so cluttered with garbage that it drove me crazy. I’m not talking viruses or other malware, just programs reminants from a variety of shareware and other software installs and uninstalls.

I started with a very brief trial of VMWare Workstation, but gave up on it quickly at the time as I thought it was overkill for what I needed. In fairness, I was actually struggling with the concept of virtualization, and why I’d even need it. After about couple more OS rebuilds, though, I gave it a shot again. VMWare was again the product of choice, and I became a big fan of the snapshot feature.

VMWare

For those of you who have never used VMWare Workstation, (or any other Virtual Machine software,) you basically install another operating system in a sandbox. So for me, I was running Windows XP on my laptop, and I created a separate copy of Windows XP in a VMWare session. It’s completely separate from your original install, so you can do whatever you want to it, without worry of messing up your host OS.

Now the snapshot feature allowed you to install the base virtual OS, and then manage an entire tree of snapshots. So I was able to create a nice clean Windows XP install and take a shot there. From there I was able to create several spinoff images. Let’s say it looked like this:

Base

|—> Base + Office 97
|—> Base + Office 2000
|—> Base + Office 2003
|—> Base + Office 2007, Beta 2
|—> Base + Office 2007, Beta 2 + Tech Refresh

At this point, if I wanted to install a totally non office related application, I’d go back to the base snapshot, install the app I wanted, and I’d have a new snapshot with Base + MyApp. All in all a very cool feature.

This was all very good, but one big issue arose when I migrated to Vista… VMWare Workstation does not seem to play very nicely there yet. :(

Microsoft Virtual PC

With the upgrade to Vista, it became even more important to me to have a virtual system on my development PC. I’m now running Office 2007, but I will still need to develop and test applications to work in prior versions of Office, and on the Windows XP platform. (I’m not supporting apps on anything earlier.) So far, the only product that I’ve found that makes the Vista cut is Microsoft’s own Virtual PC 2007 Beta.
I can’t say much about the product, as I’ve only been using it a couple of days, but it does not have the snapshot feature that I love so much in VMWare. It does have Microsoft’s own flavour of it though, called “Differencing Disks”, which sounds similar. The help files are kind of weak on it, but someone pointed out an Excellent article on this feature which explains it much better than I could.

For reference, Virtual PC 2004 is free to use, as the 2007 version will be too.

Alitiris SVS Juice

One other (Free) product worth mentioning here is SVS Juice. This is not a full OS virtualization package, but rather just an application that installs as a sort of layer between your OS and the applications. Any time you want to install a new app, you can create a new layer and install the app into it. You can then activate or deactivate the application at will.

As a case study, let’s assume that you get a new game from your brother. You want to try it out, but it needs an install and you’re pretty sure you won’t want to play it very often. This is the perfect situation for SVS Juice. You create a new layer, install the game, and can play it to try it out. Once you’re done, you deactivate the layer, and all the registry keys and disk changes that it made are rolled up into a little package and stored away. They are no longer interfering with your system, and should you choose to delete the layer, will not be left behind.

I used SVS Juice to install any kind of trial software, just to avoid the left over garbage if I didn’t want to keep it.

Granted, it doesn’t work with everything, and it can be confusing when a file you made that day disappears, or if you want to update layers, but you can get used to it. The sad thing is that it also does not work on Vista yet. :(

If you are on XP though, I’d highly recommend checking it out.