Fixing GWXUX crash (aka Windows 10 Ads)

gwxux

I would like to go on record and say the reason I’m not upgrading to Windows 10 at this point is because there is a HINT that Windows 10+ will be subscription based operating system. I mean come on, I know Windows 8 is an abomination, but a FREE upgrade to Windows 10?? Surely that can leave no doubt that Microsoft is going the way many other (foolish) IT companies are heading – to a subscription based model. I can see them crippling core OS features, like ‘Computer Management’ and ‘Network Drives’ unless you ‘subscribe’ to a higher pricing tier, just like they are doing in Azure. I develop on Azure for my full-time job and today we started receiving deployment errors stating:

The ‘AlwaysOn’ feature is not available in your current plan.

Granted, Azure was actually having some ‘down-time’ during this, and we are yet to confirm if this was a programming fuck-up, or they actually changed the pricing tier for features as they see the need for more money.

I’ve also stopped recommending Team Viewer now that they have to switched from a ‘pay-once, updates are optional’ to ‘pay every month, BILLED UP-FRONT ANNUALLY, all updates required‘. Which means you have to instruct your partners on the other end to continually upgrade to keep up with your version to be able to connect!! What once was a small one-off purchase changes to a AU$538 up-front charge, billed every year thereafter, unless you can figure out how to cancel it. And we all know how companies make it next to impossible to cancel any subscription service. Normally you have to call up a number, wait in line, and then listen to an hour long spiel about how great they are, testing your patience and willingness to give up over sitting it out to get cancelled. BTW I’m not just being theoretical here, we wanted to buy a team viewer license just the other week, but no one was willing to swipe a credit card to the tune of $AU538 per year, i.e. people are not crazy. So we did not purchase it! Team viewer lost!

Rant over, my Windows 7 box I use as my media center has been having this GWXUX.EXE crash every time i boot it for the last few months (i.e. since Windows 10 advertising started). I lived with it for a while, expect Microsoft to actually care about their advertising programming crashing in full-view of customers every time they turn on their PC, but now I’ve given up. So I’ve written the simplest possible program to look for and kill GWXUX.exe before it gets a chance to crash.

If you are seeing this crash, and haven’t found a way to fix it you can do this:

1. Download KillWindows10Ads.exe to anywhere on your PC.
2. Add a shortcut to your startup folder to this executable.

There is no UI, it just runs in the background, waiting for GWX.exe to rear it’s ugly face (yeah it’s named GWX.exe but the crash dialog shows GWXUX.exe, but the user experience it’s programmed to give is a crash dialog) and kills it quick. The source code is as follows for those who care:

using System.Diagnostics;
using System.Linq;
using System.Threading;

namespace KillWindows10Ads
{
    /// <summary>
    /// This program exists to kill the poorly programmed 
    /// Windows 10 update advertisements, which is 
    /// installed automatically by windows update and 
    /// launching automatically on login of any user.  
    /// And then it crashes, more than once.  Great effort 
    /// Microsoft.  And yes i see the irony in using 
    /// Microsoft technology to kill Microsoft advertising
    /// for Microsoft technology.
    /// </summary>
    public partial class App
    {
        public App()
        {
            while (true)
            {
                var windows10Crap = Process.GetProcessesByName("GWX")
                    .FirstOrDefault();
                if (windows10Crap != null)
                {
                    try
                    {
                        windows10Crap.Kill();
                    }
                    catch {}
                }
                Thread.Sleep(1000);
            }
        }
    }
}

Dual boot Zorin 9 with Windows 8.1

I got myself an Alienware 13 laptop after years of building desktop PCs, and I have to say i’m impressed with it so far. I intend to use it for both Android and Windows development, and I prefer to develop Android on Linux, so I needed to set up dual-boot. The linux distro I use is Zorin OS, which is by far the best desktop linux distro I have used yet. However, with this new UEFI bios that all computers come with these days, dual-booting linux and Windows 8+ is not as straightforward as in the past days of regular old BIOS. Here’s how I got it to work, based on Nehal Wani’s excellent YouTube video (but without the need to use a Ubuntu live disk):

  1. Laptop came with Windows 8.1 OEM pre-installed on a 256Gb HDD, so if you haven’t installed Windows already, do that first.
  2. You MUST shrink your OS partition down to make room for linux, which is easy to do using the built-in disk management utility in Windows (diskmgmt.msc). Just right-click you OS partition and choose ‘Shrink’, then enter the amount of space you want to reserve for linux, I chose 60Gb.
    shrink
  3. Disable ‘Fast Startup’ in windows 8 (via Power Options -> choose what the power button does).
    disable-fast-startup
  4. Go into your UEFI setup (I had to press F2 at boot time, but you may need to use Shift+restart to access it via Windows 8 logon screen).
  5. Disable ‘secure boot’, but you can leave everything else related to booting alone (i.e. you don’t need to enable ‘legacy boot’).
  6. Create a UEFI-enabled bootable USB key from the Zorin OS 9 ISO file using Rufus, making sure to select ‘GPT partition scheme for UEFI’.
    rufus
  7. Make sure you are connected to the internet with a wired ethernet cable at this point, or the zorin installation can fail due to needing to download updated packages relating to UEFI-enabled grub bootloader.
  8. Plug in the USB key and when booting, press F10 or whatever you need to access boot options. It should give you the option to boot from the UEFI-enabled USB key at this point, select that.
  9. Zorin OS 9 menu should appear, select to install or boot to live and then install, it makes no difference.
  10. When the installer gives you the option to download updates during installation, make sure you tick that checkbox.
  11. When the installer asks you where to install, it will NOT detect Windows 8 and therefore will NOT give you an option to install ‘alongside’. That’s fine, we will still achieve this regardless. Choose ‘Something else’ to specify partitioning manually.
  12. Now you have to select the free space you reserved for linux from step 2 and create a the following 3 partitions (using the plus button – credit to Nehal Wani for screenshots from his YouTube video):
  13. First create a 5Mb primary partition located at the end of this space for use as ‘Reserved BIOS boot area’:
    partition1
  14. Next create a 2043Mb primary partition located at the end of this space for use as ‘swap area’:
    partition2
  15. Finally create a primary partition located at the beginning of this space for use as ‘Ext4 journaling file system’ and mount point ‘/’:
    partition3
  16. Proceed with the rest of the install as normal, and when you are done and you restart you should hit the zorin grub-based bootloader, which should give you the option to enter Zorin (as the first preference) and also the option to enter Windows Bootloader which will enter your existing install of Windows 8.1.

That’s it!

Note that this laptop comes with WIFI hardware that is currently only supported in the very latest builds of linux, and is not supported by Zorin OS 9, which is based on Ubuntu 14.x. It may work with Zorin OS 10, which is based on Ubuntu 15.x, but I haven’t tested it and i’m not interested in an OS where the security updates last only a few months. The bug for this is here. I guess that’s still life when using linux on new hardware.