Issue with program launched as Windows Shell
I have a Unity application that I created that I have been using for several years without issue in order to serve as a kiosk at expos.
I have the application set up as the Windows Shell for a Demo user that I specifically use for this purpose. (see https://www.askvg.com/how-to-apply-and-safely-use-custom-user-interface-shell-or-explorer-in-windows/) So it effectively replaces the Windows Desktop (explorer.exe).
It is a really simple app, with just a couple of animated uGUI elements: a background image, and a couple of buttons to launch other games (as separate processes).
As I said, I've used this setup without issue for years, but I am now running across a scenario where I am encountering unexpected behavior.
Everything still works fine on my Windows 10 64-bit demo laptop with a nVidia mobile chipset. However, on my Windows 7 32-bit demo PC with an old ATI Radeon HD 7850, I just get a sea of magenta (no Unity logo). When I look at the log, I see errors like the following: "desired shader compiler platform 4 is not available in shader blob"
Mind you that if I click where the buttons are, all of my other significantly more complex Unity games (all built with the same Unity version as the kiosk app) launch and run just fine. Also, if I quit my app and then re-launch it from Task Manager, it works fine then. The issue seems to be specific to the app being launched as the Windows shell.
I tried forcing D3D9, but it had no effect on the issue. I know this used to work on Windows 7, because I've used it on the demo laptop which used to have Windows 7.
Does anyone out there have any idea what is going on and how to work around it? I have an event in 2 days, and really need this machine to be ready. The hardware is not really strong enough for a Windows 10 upgrade, nor do I have a spare Win10 license to throw at it.
Answer by SmilingCatEntertainment · Sep 27, 2017 at 02:15 PM
Some playing around has revealed this to be some kind of timing issue during Windows startup/login. Creating a shim program that waits 5 seconds and then launches the real Kiosk app works around the issue.
I would still like a better solution, because this one is teh haxx.