What do සිංහල and O'zbekcha have in common?

by Michael S. Kaplan, published on 2012/03/06 07:01 -05:00, original URI: http://blogs.msdn.com/b/michkap/archive/2012/03/06/10278131.aspx

When one thinks of සිංහල (Sinhala) and O'zbekcha (Uzbek), the list of all things that apply to both languages and no others would not be a big one.

Spoken by two different peoples in two different countries, using two different scripts.

Even within Microsoft Windows, they have two different IPM owners and two different localization vendors. And they ere shipped on two different schedules.

In fact, I can really only think of one thing that these two languages have in common.

One quite unique thing.

Symbolically and ironically in the Teaching Miss Tingle sense, a Unique Identifier aka GUID:


That's right, they share a GUID.

It's not just any GUID.

But the x86 Language Interface Pack for each of the languages has the same ProductCode GUID.

{wait for it; I know some readers, e.g. Heath Stewart, will immediately know the bug that will result from this}

Someone found it in the simple process of installing LIP_uz-Latn-UZ.msi from the Windows 7 Uzbek LIP download page and LIP_si-LK-x86.msi from the Windows 7 Sinhala LIP download page.

The second install attempt was unable to do anything more than uninstall the first install attempt.


Now all the other Windows 7 Language Interface Packs are .MLC files, not .MSI files.

But because Sinhala was forced to install a custom locale to work around the problem I described in The subtle difference between ශ්රී ලංකාව and ශ්‍රීලංකාව.

And while Uzbek was forced to install a custom locale to work around the problem I described in Would you install the Emglish language version?.

Come to think of it, that second blog describes both bugs, as well as indirectly explaining the consequences of the 64-bit Uzbek LIP not being in an MSI file!


If you have Orca installed, you can verify the problem with a quick glance of the Property table in each .MSI file:

The Uzbek LIP MSI Property table, showing the duplicate {6E9EB9C-0301-4F3A-80CC-9CF8222282A0} ProductCode.             The Sinhala LIP MSI Property table, showing the duplicate {6E9EB9C-0301-4F3A-80CC-9CF8222282A0} ProductCode.

I had a conversation with Beth, and after looking more closely at the download statistics for both Language Interface Pack, she was able to reassure me regarding my initial instincts about this bug.

My gut feelimg that perhaps this was not too awful....

Specifically, that the number of downloads of the 32-bit Windows 7 Uzbek Language Interface Packs downloaded in the fine country of Sri Lanka was precisely ZERO.

And that similarly, the number of downloads of the 32-bit Windows 7 Sinhala Language Interface Packs downloaded in the fine country of Uzbekistan was also precisely ZERO.

Given the lack of proven in-country overlap (meaning the primary source would be people making many visits to the Download languages for Windows page and treating it a one-stop shopping trip -- a worthy goal of any page, even with the side effect of skewing some language download results) it would be hard to justify re-releasing either or both LIPs.

Also known as "the fix" for the bug. :-)

And of course not only are the language name bugs that the MSIs were built to address fixed in Windows 8, but the work to make sure any future .MSI files are not ever again written this way will also be happening.

And this bug?

It will be the stuff that may make a great MSKB article, some day.

And (dare I say it?) a great blog, today! :-)

Simon Buchan on 6 Mar 2012 1:45 PM:

I dunno, I guess it's *okay*. :P

I'm guessing someone copy-pasted one to get the template for some setup script for the other or something? Seems (seemed?) unfortunately easy to do.

Joshua on 6 Mar 2012 1:55 PM:

Ugh. Just release fixed versions linked from the MSKB article. That way, anybody encountering the problem and searching the internet for the solution finds it and nobody else has to worry about it. As you said, the probably doesn't happen again.

go to newer or older post, or back to index or month or day