by Michael S. Kaplan, published on 2007/06/14 09:11 -04:00, original URI: http://blogs.msdn.com/b/michkap/archive/2007/06/14/3288145.aspx
Robert asked over in the Suggestion Box:
In your post Installing supplemental langauge support programatically you strongly advised against accessing the .inf file to install Language support, pointing people to 289125 to explain how to use unattend to install a single language which would install the whole set of languages specific to that particular language set. Could you cover the opposite for Windows XP, how to programatically (or via utilities), remove an entire language set, say remove the "install files for east asian languages" or it's right to left counterpart. There's no real detail available on how to automate removal, say in the event that you had an app that throws up when some part of the "east asian" languages support was present. intl.inf allows for "LANGUAGE_COLLECTION.COMPLEX.REMOVE" but you have now scared me from using it.
Well, the easy answer, I give in Unchecking the checkbox does not necessarily mean 'uninstall'.
The remove functionality that existed in Windows 2000 was somehow broken in Windows XP and Windows Server 2003.
And then removed entirely as a functionality along with the explicit addition of this support in Vista....
The harder answer is that clearly the sections for the removal are still there, and they work for the Complex Script languages.
And clearly the addition of both East Asian and Complex Script languages works just fine.
The removal is just broken, though clearly this was not intended.
Though technically "removal" still works, though only in a "turn the functionality" off kind of way. And a way that is not programatically accessible....
Programatically, there is no way to remove either one.
(And you may find that trying to use those remove sections for East Asian languages might do the same thing and not do the actual removal of any of the files....)
My personal feeling about an application "...that throws up when some part of the "east asian" languages support was present." is that it should be uninstalled. And uninstalled with extreme prejudice, to quote that CIA operative in that part of Apocalypse Now.
With all that said, if someone really wants to try to go down the road of getting this functionality to work, they are completely on their own -- neither Microsoft nor I can support. Microsoft in the official sense of "if you accidentally format your hard drive then you kind of signed up for it" but me in the philosophical sense of "there are many things that, once you know them, you cannot un-know them."
Think of the machines without this support as young children, with no knowledge of the ways of the world. Machines that have installed EA and CS support are the adults. And attempts to lobotomize machines by making them into children again might do a lot of damage. So if you must proceed, then be careful....
This post brought to you by ポ (U+30dd, a.k.a. KATAKANA LETTER PO)
# GregM on 14 Jun 2007 11:20 AM:
Normally, I would agree with you about removal of the application, except that it may not be the application's fault. There is a bug in USP10.dll on XP SP2 (which is installed when that box is checked, and not removed when it is later unchecked) that can only be fixed by contacting Microsoft Product Support Services to obtain a hotfix.
This hotfix has been available for a long time (since Nov 2005), but is not available through Windows Update or direct download from the web, and Microsoft does not allow anyone other than PSS to distribute the fix.
See knowledge base article 910466.
# Michael S. Kaplan on 14 Jun 2007 11:52 AM:
Ah yes, but that does not mean that an app should uninstall (or even want to uninstall) a system-wide component.... :-)
# GregM on 15 Jun 2007 11:43 AM:
Ah, but you said that your feeling was about "an application "...that throws up when some part of the "east asian" languages support was present."", not "an application that is trying to uninstall a system wide component".
I read the request as an IT-type person looking to uninstall the component on the company's systems because an app that they use has a problem with it, not an app itself or app vendor looking to uninstall the component.
# Michael S. Kaplan on 15 Jun 2007 1:02 PM:
Yes, and I answered that question, too.
But I took the opportunity to get on my soapbox and point out why I thought that was a bad idea. And what I think of applications that can't handle language support being there.
Technically Microsoft has given an implied opinion of those applications, too. By removing the option and always installing language support, Microsoft is clearly expressing that such applications are NOT part of the future.
# GregM on 16 Jun 2007 11:27 PM:
Note that if this specific request to uninstall the component wasn't because of the specific problem I posted about, then I'm 100% in agreement with you.
However, as the developer who had to do the investigation of this problem when it affected our application, I can definitively say that the specific problem I posted about wasn't "applications that can't handle language support being there", it was "applications that can't handle buggy language support being there". The problem also occurs in a simple AppWizard generated console application with no changes other than linking in the less-forgiving-of-errors memory manager.
The problem occurs when a particular component is installed, and the fix for the component is only available from PSS. Thus, to the user, the obvious options are "uninstall the component which caused the problem" and "contact PSS to obtain the hotfix for the component which caused the problem". If the component is not needed on that machine, then users are going to try to pursue option #1. I know this from first-hand experience with users that encountered this problem (oddly enough, as recently as yesterday afternoon, I must have jinxed myself by posting about it). They REALLY don't want to contact PSS, because they believe (rightly or wrongly) that PSS is going to try to charge them money to open the case.
So, yes, "uninstalling language support because applications did something wrong and blow up when it's installed" is bad. "Uninstalling unused language support because it causes innocent applications to blow up" is understandable. "Fixing the broken language support" is better.
# Michael S. Kaplan on 17 Jun 2007 12:46 AM:
Users can then go to the UI to click the checkbox, right? That solves the user problem. Without apps changing systemwide behavior....
# Michael S. Kaplan on 17 Jun 2007 1:29 AM:
And like I keep saying, in Vista it is always there.
# GregM on 17 Jun 2007 8:40 PM:
Yes, if they take the more thorough route, they can then check the box. In all these cases, it's not the application's fault, and it's not the apps changing anything, so blame the OS, not the application.
# Michael S. Kaplan on 17 Jun 2007 9:41 PM:
Yes, but the feature is not there; it does not exist. Trying to do this programatically is not supported.
Also, the actual problem report is rare compared to the number of people use complex script and EA support. Which gets us back to the general problem with trying to turn it off for the sake of a bug -- what if it is needed for languasge support, in other apps?
We could probably go back and forth on this for months, though in the end since the requested feature (programatically turning off EA/CS support) ain't there, and the suggested workaround (explain to the user they can click the checkbox) is easy to do, it is hard to believe that anything different will happen....
Sorry to disappoint, in any case.
# GregM on 18 Jun 2007 11:23 AM:
I think you may have misunderstood. My only problem with the original post was with this statement:
"My personal feeling about an application "...that throws up when some part of the "east asian" languages support was present." is that it should be uninstalled. And uninstalled with extreme prejudice"
and my problem was that this statement was blaming the application, when there are known cases when it is the OS that was at fault.
I have no problem with there not being a programmatic way to uninstall this support.
I understand the user's desire to do that rather than jump through the hoops to get the hotfix, even if I don't condone it.
# Michael S. Kaplan on 18 Jun 2007 12:20 PM:
Fair enough. Though as a general principle I think it is a better rule (every application has bugs, every component has bugs -- one can't architect around them, after all!).
referenced by