Showing posts with label office. Show all posts
Showing posts with label office. Show all posts

Friday, August 15, 2014

5 Creative Ways to Settle Office Disputes

We've all been in the situation where two people strongly disagree on which direction to take with regards to a business or technical strategy.  One vendor or another.  One process or another.  One policy or another.  It can become very emotional at times, and often leads to lost productivity and bad feelings that can linger on for days, months or even years.  In many cases, the lingering emotional scarring can impact productivity and quality of services for everyone involved.  Well, there are some semi-proven ways to deal with these situations in professional, productive and positive ways.  And who doesn't like a gosh-darn 3-P solution to a problem?  Huh?  Golly.

Here's a short list of five (5) suggestions that might help improve the situation and make everyone feel better enough to give each other a big sloppy kiss, without any hidden sharp objects.


Tip 1- Jello Wrestling with a New Twist

This one works great regardless of the gender bias that may exist in the room.  Everyone has to consume 1 gallon of Jello powder mix, then drink a 1 liter bottle of soda, and then get in a ring and beat the living crap out of each other.  First one to puke all over their opponent, wins.

Tip 2 - Paperwork Shuffle

Everyone in office environments likes to brag about how they suffer with the most paperwork, email, IM calls, voicemails, and so on.  Perfect examples of "first world problems" if ever there were any.  Imagine trying to elicit tears from a starving mother and her starving group of babies, too famished to swat away the incessant swarm of flies and mosquitoes.  They will pity you for sure.  So how about putting your money where your mouth is, and challenge the opponent to produce enough evidence to back it up?  The one who shows up with the most weight (use an approved scale obviously), wins.

Tip 3 - Marching Band

When the other person won't shut up, start humming the tune to something familiar like "Glory Glory Hallelujah".  Start quiet at first, then gradually bring up the volume until you can barely catch your breath in between gasps to belt out that next glorius bar.  Bonus points can be earned by pretending to march in formation, by yourself of course, around the conference room.

Tip 4 - Zen

When the other person continues to argue their point, refusing to hear your side at all, just stare at them without blinking as long as you can possibly manage.  Never, and I repeat NEVER, blink or look at anything else in the room besides their eyes.  They are like source of energy.  Feed off of them.  If you can stare at them long enough, one of two things are most likely to happen next: (1) they will call security for help, or (2) they will scream like a wounded baby and run down the hall as if zombies are trying to eat them.  Either way, the original problem should now become moot.

Tip 5 - Levity

When violence fails to solve a problem, humor often stands a small chance of working.  That's what most of the infamous world fascist dictators would say, or so I've heard.  Try this instead of a gun or knife:  When the opponent begins to raise their voice and shake their head in disagreement over some aspect of the topic at hand, start stripping off clothing until you're only in your underwear.  Not all at once, but remove one piece of clothing after each time they speak a phrase in disagreement.  When they finally realize what's happening, look at them and wait.  If they remain silent, offer this, "if you stop now, I win.  If you continue on, I will have to add whipped cream to this and keep moving."

If you try any of these out, be sure to post a comment below to let us all know how it worked out?  We'd love to hear your thoughts on this.  Have a swell weekend!

Sunday, June 15, 2014

IT Kool Aid Flavors: Vendor or Reality

There are two general realms, or flavors, that exist in most of the IT world.  The vendor flavor, and the reality flavor.

Case in point:

According to one reseller, the world is running, or eagerly in the process of pursuing, a "pure" Windows Server 2012 R2 and Windows 8.1 / Update 1 environment.

Other sprinkle-toppings may include flavor crystals like all the 2013 products (but don't forget SQL Server 2014), and of course, the ubiquitous "cloud" world and Office 365/Azure.  And don't forget, if you bundle you get a free kid's toy.  Is this for a boy or a girl?  Do you want to super-size that as well?

And, please don't get me started on how to properly pronounce Azure.

Anybody still using XP?  Vendor says: Pfffft!  I think not (p-shaaaa!).

Not so fast.

The uncounted, 70-90% of the computer-swilling world doesn't have the luxury of IT project plans, operational efficiency directives and SLA's to worry about. They're busy trying to make things, sell things, build things, fix things, provide services, and all that mumbo-jumbo. The kind of stuff that a lot of larger shops don't seem to have as much "direct / hands-on" exposure to anymore.

Nowadays, many larger shops have grown into detached sector/division/department/project/task-group/tiger-team environments, where they fit into a mesh of bean-counter menageries that eventually lead to something that tickles shareholders and keeps the paychecks flowing.

I have no intention of offending or insulting anyone by this (well, okay, maybe some resellers and sales-folks), but the truth can be summed up in a very simple example:

Kathy's landscaping shop has a few apps they bought with personal funds to help with designing backyard ponds, estimate water coverage, soil depths, and seasonal impacts on gardening.  They bought them when they bought their prized Dell or HP desktop they still use with Windows XP.  And guess what:  IT STILL WORKS.  In their view, shiny new touch-screen tiles and cloud things are not as exciting as kicking the shit out of the revenue numbers compared with the nearby Lowe's or Home Depot.

Their IT support center?  1-800-ASK-DELL or 1-800-WHATS-YOUR-KIDS-FRIENDS-NUMBER-AGAIN?

Sure, there are distinct, and tangible values to the new features provided by Windows 8 and so on, but for many (okay, dare I say: most) small businesses, and home users as well, the deciding factor is "why do I need to buy another new computer if the one I have still works?"  For many small "mom-and-pop" shops, the apps they depend on aren't tops on the lists of bigger companies.  They tend to be very industry-specific, and extremely function-specific as well.  Things that perform one task, maybe two, but do them well, and are also either cheap, or free.

Ask any software repackager who deals with more than a hundred titles, and they'll probably have no trouble recalling a list of those "oddball" apps that are tough to wrestle into a package, but for whatever reason, HAVE to be made available or the planets will spin out of orbit and gravity will dissolve.  Floral arrangement apps may seem stupid, but tell that to a small, family-owned Florist.

The consumer isn't broken. The rationale isn't broken either.  And neither are the products. What's broken is the sales pitch.

Remember the Daffy Duck salesman episode?  Hey Bud, you need a house to go with this door knob.

PS.  In case you're wondering, the photo depicts (for me, anyways), from left to right: me, a vendor, and a small-business owner.

Sunday, May 4, 2014

Windows 7 Desktop to Windows 8 Tablet Migrations: With Fries, a Drink and a Xanax

One of my clients is in the midst of a mildly-frustrating migration to change from a like-for-like computer hardware refresh project, to one that inserts the added dimension (or dimentia) of offering users the option to purchase Windows 8 tablets.

The basics of the environment are this:

  • Active Directory (Windows Server 2012)
  • Windows 7 SP1 Enterprise 32-bit on 99.99% of the desktops and laptops
  • Office 2010, IE8 on most everything, but some smattering of IE11 and Google Chrome
  • Almost no Windows 8 production computers
  • Roughly 1400 distinct software applications
  • Roughly 6000 desktops / laptops / users
All of the Windows 8 tablet devices are configured with Windows 8.1 64-bit edition.  They will also come with Office 2013, IE11, Google Chrome 30-something, and a handful of other staple apps for various doo-hickey things (VLC Player, Adobe Reader, etc.)

Of the approximate 1400 software products in the production environment, roughly 40% are big-name vendors (Adobe, Microsoft, Oracle, etc.).  Another 40% are from lesser-known vendors, but still have a real "support center" you can call into, somewhere.  The last 20% are what some might call "garageware".  Those are the kinds of one-off products which are (more often than expected) "must-have" tools for various department functions.  Those are also quite often duct-taped together by a "vendor" who answers the phone while trying to scoot their noisy cat away from the food dish sitting beside their keyboard.

But all of this is just backdrop to the real issues...

While the bigger headaches with XP-to-Win7 migrations circled around UAC challenges, the newer challenges are less dramatic, but no less serious.  Some of the key aspects to consider when reviewing a given software product for use on a tablet device (I'm just picking on Windows 8, but it could be any tablet OS actually), are these things:
  1. Does the application sport a UI that is easy to use on a tablet? (i.e. the "UX" aspects)
  2. Does the application work well with kinds of touch input "gestures" that a tablet provides?
  3. Does the vendor give a shit about tablets, or Windows 8 for that matter?
Go ahead and laugh at #3, but you might be surprised how many would seriously tell you "no".

Now, aside from the aesthetics, there the nuts-and-bolts stuff to consider:
  1. Does the application rely on a specific CPU architecture?  Not just AMD vs Intel, but how it pertains to Windows (e.g. "Program Files" vs. "Program Files (x86)", and the wonderful Registry hive "WOW6432node" stuff)
  2. Does the application rely on specific browser interfaces?  Will it work as well with IE11 as it does (or did) with IE8?
  3. Does it rely on a particular Microsoft Office version?
But wait... there's more!!!

If you're supporting a shop that's large enough to care about things like this, you could fall within the general realm of having to care about this as well:  Licensing Models.

Let's say you have 1,000 desktop computers running Autodesk's infamous AutoCAD 2014 (okay, you're probably still on an older version, trying to squeeze budgets as usual).  Maybe you were smart enough to install them using the provided deployment toolkit, and you opted to use a network license server (e.g. "Flexnet" or "FlexLM").  You did some analysis and figured out that only 75% of the licenses were in use at roughly 90% of a typical work week, so you purchased 750 licenses.

Now you show up at a Monday morning meeting, wearing a clean shirt, toting your notepad, pen and a steaming hot cup of coffee.  You're in the midst of enjoying a nice, long swill of that caffeinated goodness, when one of the managers across the room says that she wants to replace 500 of the desktops with Windows 8.1 mobile tablets and run AutoCAD as well.  Now you've got coffee stains all over your clean shirt and on the arm of the poor guy next to you.  What a bummer.

Did you remember to configure "license borrowing" on your server?  Did you plan for the possibility of such a large number of licenses possibly going off into the wild, for who knows how long?  Will that 750 number still work for this new direction? 

Things to make you rub your chin and say "hmmmmmm...."


Sunday, December 23, 2012

Windows 8 - Scoring my Predictable Predictions

Some of you, okay, two of you, might remember that I posted a semi-quasi-kinda-sorta-prediction about Windows 8, back in March of 2012 (it's almost 2013, so I didn't want to say "of this year" as it might confuse even myself).  (see "Windows 8 - What I Think About It").  I ended the post by promising to follow-up when Windows 8 was "closer to final release".

Well, I'm following up on it now:
  1. I still stand behind what I posted.  That sounds bold, but it's really an easy thing to say, since I'm really standing (ok, sitting) "behind" miles of Internet circuitry, bazillions of electrons, a bunch of ISP connections, wireless signals, a million smartphones and mobile devices, and a glass of milk with some half-eaten cookies.  At least my trusty, and sleeping Beagle will protect me.
  2. Today's news has been reporting that holiday sales of Windows 8 have been "disappointing".
  3. Enterprise customers are still Microsoft's bread-and-butter
  4. Even with some signs of hope, the Consumer market continues elude Microsoft (as compared with Google's Android eco-system, and Apple's iOS juggernaut)
  5. The volume of high-profile Windows 8 migration projects appears to be non-existent.  Compared with Windows 7 (remember the impressive list of big customers announcing early adoption?  Yeah.  Not quite there with Windows 8)
  6. Lastly, my statement about the "marketing stupidity" is still as valid.  The ads are still aimed at consumers, not the enterprise.  Until they can coerce the market forces to be aligned otherwise, ignoring the enterprise customer base is shooting themselves in the foot.
I'm not Mini-Microsoft, and I don't have any "inside" knowledge of what goes on out in Redmond like some other folks do.  But as an IT consultant, I see a decent cross-section of municipal, education, and business environments, at least for the scale of our local region (the largest city by population in Virginia).  And what I see doesn't look promising for Windows 8.  As bleak as that may sound, I haven't heard a peep about Office 2013, which is even bleaker.  Customers just aren't asking about it.  When Windows 7 was rolling out, all I heard was one of three things:

[A] "I like it a lot more than Windows XP!"
[B] "I've heard Windows 7 is better than Windows XP.  Should I/we upgrade?"
[C] "I/we didn't like Windows Vista, is Windows 7 really worth skipping Vista for?"

I've heard none of these comments about Windows 8 from any of my customers, and from my discussions with other local consultants and IT workers, they're not hearing it either.  It's a shame too, in some respects.  The parallels/similarities between Windows 8 and Windows Vista are almost uncanny:
  • Most of the UX changes feel unnecessary from a functional aspect.  Some aspects are nice, like the "metro" theme motif itself, but the tiled UI on a desktop or laptop is just not happening for most users.  Even if you happen to disagree with that, it's hard to argue that there shouldn't be at least the option to continue using the traditional Start Menu design.  The astounding number of downloads of third-party add-ons to do just that should be enough to warrant a second consideration.
  • Some features seem more difficult to access (shutdown, restart, Windows Update, etc.) as compared to the previous version.  With Vista it was that whole Network Neighborhood shuffle.
  • The "classic" UI fallback is either crippled or non-existent, opening the door for third-party solutions (Stardock, ClassicShell, etc.) which is a concern for managing a taller "stack" for enterprise deployments.  Many (actually most) enterprise environments I've seen skipped Vista entirely, instead focusing on migrating from XP to Windows 7.  That incurred hardware upgrades, and at least some targeted education of their users, officially (intranet how-to's, e-mails, etc.), or otherwise (ad hoc, over-the-shoulder training).
The solutions to these challenges are already posted to death across the Internet, so I 'm not about to regurgitate yet another spin on all that.  Just read Paul Thurrott's thoughts on it, he's pretty much spot on (I recommend reading the other related "Fixing Windows 8" posts on his site as well).

So, getting more to the point: How would I score my hit-list of predicted fixes for Windows 8?  Let me enumerate thy ways:


  1. A "Windows 7 Classic" theme, that looks EXACTLY like Windows 7.  For businesses to roll-out onto their already shell-chocked XP-to-7 users.  Then we can shift to Metro later when the Xanax runs out.  
    Score: A+ / Start8 by Stardock, ClassicShell, and other add-ons appear to be flying off the virtual shelves as users look for ways to restore their Start Menu comfort zone.
  2. A native App-V client included in the base product.  App-V is cool, but I'm really sick of how hamstrung it is within MDOP and EA/SELECT and it's really holding back a lot of potential.  Sick isn't the word.  Disgusted is more like it.  Score: C- / The XAML (Metro/Tile) application model is a half-way solution to the portability aspect of App-Virtualization models. Nothing has really opened up as far as the App-V/MDOP licensing constraints are concerned, but XAML shows promise for future cross-(Microsoft-based)-platform development.
  3. A native MED-V feature as an option.  My feeling is the same as described for App-V.  
    Score: B / While Embedded XP has kind of been forgotten, at least Microsoft took the rather bold move to offer Hyper-V 3.0 for client devices.  It still lags behind VMware for desktop 
    Virtualization in some respects, but it's still a good move.  Competition is good for the customer (hence VMware Workstation 9's somewhat hurried release).
  4. A better approach to COM activation than DCOMconfig.  
    Score: F / No change.
  5. A better solution to keep the Registry clean.
    Score: F / No (significant) change.

Personally, I feel Microsoft has an easy "out" right now.  They can accept credit for what customers end up favoring, while assigning blame on Stephen Sinofsky for whatever they dislike.  Either way, it's what a Politician would call a "win-win" situation.  Maybe they can repeat the lesson's learned from Windows Vista when pushing ahead with Windows 7:  Mop up the challenges in Windows 9.  Maybe.  There is no crystal ball, so no one really knows.

If Microsoft had a crystal ball, they would name it "Microsoft System Center Crystal Spheroidal Prediction Device 2012 Ultimate Enterprise Edition".  Geez.  I crack myself up. How pathetic.

And there you have it: Another dose of my completely useless, mind-numbing stupidity, shrink-wrapped and stamped with a scratch-n-sniff label that says "Check this out!".

Merry Christmas!

Monday, February 13, 2012

Choosing the Right Data Repository

All you mental freaks out there likely saw "repository" and thought "suppository", but that's ok.  Settle down.  It's not the weekend yet.

This article cooked up in my thimble-sized brain after a string of events at my office.  The issues all circled around having islands of data sitting around in various places, inside of various "containers" and in various formats and structures.  The data in one particular case involves inventory.  But inventory is a big, fat, drippy, soggy bag of goo that has different meanings and different values to a lot of people circled around it like kids at a campfire.  Some want numbers.  Some want names and labels.  Some want locations.  Some want state values (indicators of current status or changes of state).  Some want derivatives, like contract data, support metrics, and other secondary and tertiary cost drivers.


If you put a microphone up to each of these people and ask them where all this data should reside, you will very likely hear a wide variety of answers:
  • Spreadsheets
  • Database Tables
  • XML files
  • Visio Drawings
  • AutoCAD Drawings
  • Compound Documents (Word documents with embedded spreadsheets, etc.)
  • Web-enabled reports (web services providers)
  • Paper print-outs
And the list goes on and on.

So... who is correct?

As it turns out, when you're in the midst of sifting through what bucket fits the most needs of the most people, it's difficult to see the end of the path in the fog of new requirements.  Until you've met with everyone involved, and discussed what they (a) think they need and (b) what they REALLY need, it's near impossible to avoid choosing the wrong container.  I've been in this business for over twenty-five years and I've seen the smartest MBA, PhD, and senior brains screw it up.  It's hard not to.  The reasons are a-plenty...
  1. You can't predict future needs
  2. You can't predict future project priorties
  3. Sizing the storage requirements is challenging
  4. Placing the storage provider is challenging
  5. Avoiding proprietary "lock-in" can be challenging
In general, here's what I usually try to follow...
  1. Strive for version independence.  Avoid storing in a product where version changes often cause upgrade issues for consumer applications and services.  ADO and ADO.NET (ODBC, OLEDB) are fairly version-agnostic.  Meaning that if you move the tables from SQL 2008 R2 to SQL 2012 there's much less chance of having to recode applications to change the connection endpoint compared with storing in Microsoft Access, Excel or even AutoCAD drawings.
  2. Find a "platform-neutral" provider medium.  Client applications are always off the table unless there isn't a choice.  It has to be a "server" application or service.  It has to provide robust access to everyone that needs it, with the least overhead, and the least performance drag.  If every consumer of the data has to have a proprietary application installed in order to access it, you're taking a risky, and often costly direction.  This is why databases are most often preferred, since they offer up access in the most neutral ways and the widest range of applications and uses.
  3. Take your time!  Don't let anxious users pressure you into making a quick decision rather than a correct decision.  Just because the floor plan folks want everything in AutoCAD in time to meet their looming deadline doesn't mean that a month later, five times as many users will scream for access to the data via a web services provider medium, or an XML table.
  4. Try to leverage what you already have.  If you have Oracle, use it.  If you have SQL Server, use it.  If you have an intranet server with web services enabled, use it.  Try to not build new bridges when others exist unless you can't possibly make do with what you have. Reinventing the wheel is dumb.
  5. Enlist an objective team.   Gather folks from your database group, your applications development group, management group, finance group, any group that might even be remotely impacted by what you're trying to accomplish.  You'd be amazed what you can learn from people you didn't think had any interest or involvement in what you'r doing.  Many times they've been down the same road before and can offer valuable insight and advice.  Take it!  Learn from it.  It's ok to meet with the direct consumers, but if you surround yourself with only them, you will be going forward semi-blind.
  6. Get metrics!  Don't ever base a purchase decision or a project direction on input from test users that don't back it up with hard numbers.  It's not that you can't trust them (sometimes you can't), but it's that without numbers, there's no way to objectively compare and analysis what's going on.  For example:  I was involved with a project to establish a central data repository for a variety of applications over assorted quality WAN links.  Three of the locations complained about performance problems and pushed HARD to go with another alternative.  It turned out to be a network link configuration problem at the router, and once it was addressed, the performance was perfectly fine.  Had this not been investigated, the alternative project direction would have delayed the entire project for four more months and added 50% more cost.  Metrics are king.
Even if the majority of the consumer-end users are clamoring for going with a platform that fits squarely within their operational environment, try to avoid a knee-jerk response.  I've seen too many projects that followed that direction and everyone realized later that they should have started with something more generic or "external" to their own needs.  The reasons are often tied to extending logical links to other data sources to leverage more powerful automation uses.  

For example, the sales department chose Excel spreadsheets to store all their static tables of rates and tiers for various services and products.  The engineering team would like to link to that in order to improve material and cost estimation, but the spreadsheets are on a server that doesn't allow access to the engineering department.  Furthermore, when they decide to move their spreadsheets to a SharePoint intranet, they realize the format and layout of the data is difficult to use for external linking.  Had they chosen an XML file posted on an intranet server, or used a robust Database host, the data would have been format and layout agnostic and more easily accessible to users without distributed and varied layers of security (NTFS, shares, groups, application-specific formatting, etc.)

All I'm saying is that you need to be cautious and take your time making a decision on where to store data that will be used by a lot of different roles throughout your organization.  It's kind of like placing a watering hole in a vast desert.  Those that are too far will suffer before they can reach it.  Those that show up with buckets that won't fit into the Well are going to suffer too.  Choose the location and configuration wisely.

Friday, March 18, 2011

Why I was Wrong: Part 2b

So, I already mentioned that I had made a foolish decision to chase the scripting path for deploying an Office 2010 upgrade to our 2007 users (as well as being part of our SCCM OSD task sequence for imaging new machines).  Rather than describe the steps in nausiating detail, since there's already a bunch of articles, blogposts, wikis and whatnots out there that do that just fine, I will summarize by saying that all you need are:

  1. A shared folder with the Office 2010 installation source
  2. A custom .MSP from the Office 2010 Customization Toolkit (setup.exe /admin)
  3. A custom config.xml (or whatever you want to name it)
  4. A cup of strong coffee, and some headphones, and a huge grin on your face

Then the package program simply does the following…

setup.exe /adminfile custom.MSP /config config.xml

Done.

Make sure you follow some standard best practices for customizing the MSP from OCT, like turning off the prompt for updates at the end or first-launch of an Office app.  The default option is to remove previous versions.  But be sure to set the config.xml to properly hide the progress, disable the completion notice and suppress modality.  Then you're good.  I'm good.  We're all good.  Let's drink something good now.  Cheers!

Thursday, March 17, 2011

I Was Wrong

Yesterday I posted a script for upgrading from Office 2007 to 2010.  It wasn't the "way to go".

A former boss of mine, back in my construction days, used to say "I am man enough to admit when I'm wrong.  I was wrong to listen to you!" and he somehow kept a straight face.  Just a thought that made me smile, but in any case, I can't blame anyone but myself.

The reason is this:  The WMI Uninstall() method works fine.  The WMI process monitor on "setup.exe" works fine as well.  But the problem is that when it's done with "setup.exe", it forces a reboot 9 times out of 10.  That's not good (unless you don't intend on finished the rest of the script for installing 2010).

The better way is to use "setup.exe /uninstall [ProductCode] /config [config_file.xml]" where [ProductCode] is something like "ProPlus" or whatever.  The trick is that you have to kick it off with "start /wait", but that's not all (sorry Billy Mays and Ron Popeil).  The START command doesn't like UNC paths.  So you need to stuff a PUSHD call in first, switch to the source (admin) share for Office 2007 and run the START /WAIT SETUP.EXE... command from there.  Then it works.

Wednesday, March 16, 2011

Script/SCCM Upgrade Office 2007 to Office 2010

There are a lot of ways to uninstall Office 2007 and install Office 2010, as well as many ways to combine them to effect an "upgrade".  Here's one I recently used that was clean, simple (ok, sort of simple) and reliable even when shoved through the entrails of SCCM advertisements onto XP and Windows 7 clients.  Note that the "custom.MSP" was created by using the Office Customization Toolkit.

Watch out for word-wrapping!

CMD Script
@echo off
rem ****************************************************************
rem  Filename..: setup.cmd
rem  Author....: David M. Stein
rem  Date......: 03/16/2011
rem  Purpose...: install microsoft office 2010 (remove 2007 if found)
rem ****************************************************************
CLS
title Installing Office 2010
echo Installing Microsoft Office 2010...
SETLOCAL
set APPNAME=Office2010_x86
set LOG=%TMP%\%APPNAME%_install.log
rem set MSI=/quiet /norestart
echo %DATE% %TIME% installing... %APPNAME%... >%LOG%
echo %DATE% %TIME% source....... %~dps0 >>%LOG%
echo %DATE% %TIME% target....... %COMPUTERNAME% >>%LOG%
echo %DATE% %TIME% windir....... %WINDIR% >>%LOG%
echo %DATE% %TIME% progfiles.... %PROGRAMFILES% >>%LOG%
echo %DATE% %TIME% temp......... %TMP% >>%LOG%
echo INSTALL LOG: %LOG%
echo ----------------------------------------------- >>%LOG%
echo *** REMOVE OFFICE 2007 *** >>%LOG%
rem ------------------------------------------------
echo %DATE% %TIME% info: checking if office 2007 is installed... >>%LOG%
if exist "%ProgramFiles%\Microsoft Office\Office12\winword.exe" (
  echo %DATE% %TIME% info: *** removing Office 2007... >>%LOG%
  cscript /nologo "%~dps0uninstall2007.vbs" >>%LOG%
) else (
  echo %DATE% %TIME% info: Office 2007 was not found on this compuer. >>%LOG%
)
echo ----------------------------------------------- >>%LOG%
echo *** INSTALL OFFICE 2010 *** >>%LOG%
echo %DATE% %TIME% info: app-log is %temp%\Microsoft Office Professional Plus Setup(*).txt >>%LOG%
echo %DATE% %TIME% command is "%~dps0setup.exe" /adminfile "%~dps0custom.MSP" /config "%~dps0ProPlus.WW\config.xml" >>%LOG%
rem --- intentional line break for blog post ---
"%~dps0setup.exe" /adminfile "%~dps0custom.MSP" /config "%~dps0ProPlus.WW\config.xml"
echo installation completed!
if %errorlevel%==0 (
  echo %DATE% %TIME% info: installation was successful >>%LOG%
) else (
  echo %DATE% %TIME% fail: exit code is %errorlevel% >>%LOG%
)
ENDLOCAL
exit %errorlevel%

VBScript File
Rather than using the setup.exe or direct msiexec /x options for doing the uninstall, I just crack my Indiana Jones whip on WMI and let it do the uninstall.  Only problem is that the "Uninstall()" method doesn't wait.  So I had to insert a process termination monitor (below) to watch for when "setup.exe" finishes before continuing on.

'**************************************************************** 
' Filename..: uninstall2007.vbs 
' Author....: David M. Stein 
' Date......: 03/16/2011 
' Purpose...: uninstall office professional 2007 
'**************************************************************** 
Dim query, objWMI, colSoftwareComponents, objSoftwareComponent  
Const strComputer = "."  


wscript.echo LogDate & " info: searching for office professional 2007..."  
query = "Select * from Win32_Product " & _
"Where Name = 'Microsoft Office Professional Plus 2007'"  

Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\cimv2")  

Set colSoftwareComponents = objWMI.ExecQuery (query)  
For each objSoftwareComponent in colSoftwareComponents
found = True
wscript.echo LogDate & " info: removing office professional 2007..."
objSoftwareComponent.Uninstall()
Next

If found = True Then
' this is where we setup a watch to wait for setup.exe to finish...
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") 
query = "SELECT ProcessId FROM Win32_Process WHERE Name='setup.exe'"
Set colItems = objWMIService.ExecQuery(query,,48)
For Each objItem in colItems
intProcessID = objItem.ProcessId
Next
If intProcessID <> "" Then
Set colMonitoredProcesses = objWMIService.ExecNotificationQuery _
("Select * From __InstanceDeletionEvent Within 1 Where " & _
"TargetInstance ISA 'Win32_Process'")
Do Until bTerminated = True
Set objLatestProcess = colMonitoredProcesses.NextEvent
If objLatestProcess.TargetInstance.ProcessID = intProcessID Then
bTerminated = True
End If
Loop
If bTerminated = True Then
wscript.echo LogDate & " info: office professional 2007 uninstalled" wscript.echo LogDate & " info: exit code is " & err.Number
Else
' yes, I know this condition can never be true, oh well.
wscript.echo LogDate & " warn: setup.exe process failed to terminate." End If
Else
wscript.echo LogDate & " warn: unable to obtain processID handle"
End If
Else
wscript.echo LogDate & " info: office professional 2007 was not found"
End If


'---------------------------------------------------------------- 
' comment: 
'----------------------------------------------------------------
Function LogDate()
LogDate = FormatDateTime(Now, vbShortDate) & " " & _
FormatDateTime(Now, vbLongTime) 
End Function


So when you call the .CMD script, it launches the .VBS script and checks for Office 2007 and (if found) uninstalls it, then returns to the .CMD script process to finish installing Office 2010.  So far, so good.  I hope this helps someone else out there.

Wednesday, March 2, 2011

What I've Accomplished This Week

  • Packaged Office 2010 using OCT and Config.XML modification to deploy with SCCM
  • Wrote scripts to customize MED-V client deployments via SCCM
  • Wrote scripts to customize MED-V client workspace management features
  • Worked on integrating SCCM with a web interface and SQL
  • Installed and testing IE9 RC, Chrome 11, and Firefox 4
  • Testing the IE9 Developer Tool (F12) Network Trace toolset (very nice!)
  • Updated my Google Chromebook CR-48 to the Dev Channel (0.10.x)
  • Finished reading a few books:
    • Dan Brown's "The Lost Symbol"
    • Laura Hilldebrand's "Unbroken" (very good!)
  • Started reading "The Accidental Billionaires"
  • Reading samples of several books to decide on which to buy next:
    • Don Rumsfeld: "Known and Unknown"
    • Dan Brown: "Digital Fortress"
    • a few others
  • Watched "The Town"
  • Ironed four shirts
  • Polished one pair of brown shoes
  • Ran my first full mile, without a break, since I was in my 20's - just last night!

Monday, February 7, 2011

Avoid Extremes

Whether it's politics, religion, sports teams, foods, drinks, or dog breeds: avoid becoming an extremist.  Because being "extreme" immediately evokes the perception of closed-mindedness.  It says, by its very nature, that your view is entirely to one side and there is zero chance of entertaining a contradictory view no matter how subtle.  That's just ignorance.

Same goes with technology.  I say it all the time, that if anyone says "you have to use X because it's just the best" or "X is crap and won't work", but can't seem to offer up a non-emotional, level-headed, concise yet meticulous rationale, then move on to the next "expert" and keep searching for a better answer.

Examples?

PowerPoint, Excel and Access.  So many people open their jaws to spew ignorant crap like "oh you should avoid PowerPoint always", that it is slowly becoming a mantra for the ignorant.  There's nothing wrong with PowerPoint.  There's nothing wrong with guns and bullets. There's nothing wrong with fire.  It's all a matter of HOW you use them.  PowerPoint can be used to make incredibly entertaining, educational, informative, and interesting presentations.  It can make dynamic workflows, process diagrams, and do things that I wish Visio could do.  Excel and Access also get a bum rap by the ignorant and naive of the world.  Just because MOST people don't know how to use them properly (or effectively), does not translate into them (as tools of the trade) being useless or "bad".  Try to avoid falling into the rhetorical traps of our world.  Dogma sucks.

Monday, November 29, 2010

My Arsenal of Packaging and Deployment

I had just finished my third coffee and pondering why it was having no effect on me, when I realized it was because I had no sleep the night before.  The lack of sleep, combined with an overdose of caffeine and sugar led my brain to a big empty thought cloud.  The kind that would have made Beevis proud. Then I look started thinking about what are all the things I use to prepare a software package for deployment. Here goes:

Office 2007 Custom Installation Wizard

Office 2010 Customization Tool + Office ADM/ADMX templates

Autodesk Deployment Wizard (AutoCAD, Inventor, 3DS Max, etc.)

Adobe Custom Installation Wizard (CS5 products)

Adobe AAMEE for patch downloads and deployments

Wise Package Studio 8.0 and make a snapshot capture into .MSI

Run setup.exe and grab the .MSI from %temp%

Run setup.exe with –r and capture the setup.iss

Direct Files: .MSI, .MST, .MSP

CACLS.exe

REGINI.exe

Orca

Sysinternals PStools, Procmon, Process Explorer

TextPad 5 (for scripting)

SMS Trace32 (log viewing)

7-Zip

Saturday, November 20, 2010

Basic Math is Dead

It amazes how many people pull a "decision" from their ass without taking a few seconds to do the math.  Here's a simple case in point:

A former co-worker was lambasting the Keurig K-cup coffee/tea brewing machine as being a waste of money.  Now, excluding individual/personal vices and virtues, I'm not going to pick on him for smoking cigarettes, drinking beer, or buying camoflage clothing (when he rarely goes into the "woods"), but regardless, he insisted that the Keurig machine was indefinitely more expensive and could not "pay for itself" by comparison to walking over to the nearby 7-11 for an 8oz cup.

Here's the math:

  • Price of Keurig machine at Sam's Club: $110
  • Price per box of 80 count k-cups at Sam's Club: $30
  • Price per k-cup: $0.38
  • Cups per day: 2
  • Price per 8oz cup at 7-11: $1.00
  • Savings per day with k-cups: $1.25
  • Savings per 80 weeks: $112.50

So, after 80 weeks, the savings from lower supply costs will have paid for the machine itself.  Of course, this is skewed logic, but it still illustrates that nobody in the room had any idea if the k-cups were even cheaper until one person whipped out a notepad and pen and did the math on the $30 80-count box.  Frustrated with the number, the co-worker then turned to the coffee pot and said "well, that's only 50 cents per cup!"  Smile

Thursday, June 24, 2010

If Offices Were Run Like Construction Sites

After years of working in construction, then college, followed by office-oriented jobs, I've come to realize some interesting comparisons.

  • Leaving an empty water jug in the dispenser would be punishable by wedgy
  • Leaving 0.5 cups of coffee in the pot and walking away would be punishable by urinating in your cup
  • Standing outside taking a smoke break would be punishable by a face smack
  • Taking three smoke breaks?  Three face smacks
  • Walking off when your lunch is finished in the microwave:  Free lunch for anyone standing nearby
  • Whining about the lighting: circle up the coworkers to perform synchronized laughing
  • Complaining about being tired: Send employee outside to dig a 100ft long trench, 3 feet deep (no changing clothes either)
  • Complaining about parking so far away: Move parking space back 10 spaces for every complaint spoken
  • Taking the elevator when you really don't have an excuse: 20 push-ups in the parking lot
  • Scheduling more than one meeting per week:  20 push-ups in the parking lot

Thursday, January 14, 2010

Did you know: You can Automate Org Charts from Active Directory?

Yep.  You can.  Here’s all you need:

  • A Windows Active Directory network
  • Microsoft Visio
  • A Brain
  • Some coffee
  • Access to Google

Saturday, April 25, 2009

Run the Outlook Profile Migration Utility in a Login Script

Run the Microsoft Outlook Profile Migration utility from a KiXtart script at login (yes, part of a login script). Just drop the exprofre.exe file into the NETLOGON share on your domain controller and drop this crap (oops, script code) into your KiX login script, suck down a coffee and scream "Yeah baby!!!!"


Function MigrateOutlookProfile()
Dim $dc, $clientlog, $migprof, $exprof, $temp
$dc = SubStr(@LSERVER,3)
$exprof = @LSERVER+"\Netlogon\exprofre.exe"
$temp = ExpandEnvironmentVars("%temp%")
$clientlog = $temp+"\exprof_"+@wksta+".log"
If Exist($exprof) = 0
? "mgrOutlookProfile...: error - unable to locate exprofre.exe!"
Return
EndIf
If Exist($clientlog)
? "mgrOutlookProfile...: deleting previous log file..."
Del $clientlog /c
If @ERROR > 0
? "mgrOutlookProfile...: failed to delete log file!"
EndIf
EndIf
? "mgrOutlookProfile...: migrating outlook profile..."
$migprof = $exprof+" /targetgc="+$dc+" /v /n /logfile="+$clientlog
? "mgrOutlookProfile...: $migprof"
Run $migprof
? "mgrOutlookProfile...: process has been initiated and will continue"
? "mgrOutlookProfile...: check for the following log when finished..."
? "mgrOutlookProfile...: $clientlog"
EndFunction