Upgrading Clients

I just completed my upgrade to GW18 and am looking to come up with a hopefully automated way to upgrade my clients so I don't have to visit everyone's systems. Unfortunately in the past with different updates GW tends to throw all sorts of random errors and behaviors that end up with me having to uninstall and reinstall the client on a individual machine basis. So here I am asking what is the best way to deploy an automated update in my environment, details as follows:

My main installation is a ZCM package that copies the setupip.en, setupip.fil, extract_setupip_packs.cmd and groupwise.mst files to the local machine and runs them as a dynamic administrator. Fresh installations work great, upgrades tend to experience issues with random DLL files, performing the uninstall but never fresh install, or it installs but internal GW behavior is off and requires a reinstallation, by this I mean we've had Spell Check stop working on the Subject line only, the client crashes when opening specific messages, or other oddities.

In the past I've also made a ZCM package that copies the client setup.exe file locally and runs it as a dynamic administrator. Sometimes the upgrade goes off without a problem, sometimes the upgrade completes but we get the odd GW behavior like named above, and the most common is the installer will proceed extremely slowly. A good GW install/upgrade will only take a couple of minutes, by hang these will often take upwards of 10 minutes and if left to their own can run for hours. If this happens, canceling the upgrade, uninstall the old, install the new work within a matter of minutes.

This all being said, what have people found to be the best way to upgrade their GW clients to newer versions in the most automated method? I really need a way to do this without having to have to redo them manually afterwards. Thanks!