Is it possible for an installed Windows application to localize the display name?
If yes, I assume that changes what's stored in the DisplayName
registry key for this application. I'm asking because I'm interested in how you'd query a potentially localized name if you're trying to get the UninstallString
.
Would the installer have a queryable list of possible display names or any other unique ID for a given application?
Without knowing what you're trying to do it's not clear how to answer this. MSI-based installs are typically localized by having a base install in (say) English, and then you create a transform with an MSI editor (such as Orca). You can change the ProductName, and everything in the UI. With that transform (a .mst file) you install with a command line that includes TRANSFORMS=[path to mst file] and you see localized UI, ProductName etc.
If you want to know the ProductName (or anything else about the installed product) you'd do MsiGetProductInfo or equivalent:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa370130(v=vs.85).aspx
and ask for the name, version, installed language or whatever). There is an MsiEnumProducts API that enumerates MSI-installed products.
Nobody uses the UninstallString for an MSI uninstall (if you delete or change that it still uninstalls). You just call MsiConfigureProduct:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa370070(v=vs.85).aspx
and make it absent.
Some installs don't use MSI to do the installation - in those cases the uninstallstring may be useful for something. How they do localization depends on the tool used to create the setup - sometimes they have string resources in files.
Having said all that, in many cases the ProductName is never localized because it's a recognizable brand and company name. I suspect that (using your example) Flash Player may always be called Flash Player because the translation in (say) French makes no sense and the English is recognizable world wide under that name.