It seems to be very difficult to find any information about what is actually
supported. My belief is that the codepage you use has to map exactly onto
one of the defined ANSI font ranges in Windows. See the 'code page
bitfields' list in the FONTSIGNATURE structure for what GDI understands, at
http://msdn2.microsoft.com/en-us/library/ms776441.aspx.

Summary if this is correct: supported codepages are 1252, 1250, 1251, 1253,
1254, 1255, 1256, 1257, 1258, 874, 932, 936, 949, 950, 1361, and IBM/OEM
codepages 869, 866, 865, 864, 863, 862, 861, 860, 857, 855, 852, 775, 737,
708, 850 and 437. I'm not even sure that the OEM codepages would work.

Summary of my thinking: Windows Installer uses the same codepage to
translate everything as it does to display. To display, it has to create
fonts using one xxx_CHARSET value as defined in the LOGFONT structure for
ANSI compatibility (recall that Windows Installer 1.0 was designed primarily
for installing Office 2000 on Windows 9X). Only codepages which map exactly
onto one xxx_CHARSET value will work correctly. Therefore I would expect
that there's a call to TranslateCharsetInfo with TCI_SRCCODEPAGE, fairly
early on in execution, to determine what the correct CHARSET value is. If it
fails - which it will if not one of the specified values above - Windows
Installer will fail to run the package.

By its nature UTF-8 cannot have an associated ANSI charset.

Because of this you *cannot* localize anything that is installed in the
package. Only localize the strings that are displayed in the UI. If you're
trying to display strings in the installation UI in an unsupported
language/character set, you'll have to write some external UI.

If you want to localize your application I would strongly recommend using
the satellite DLL model, where you have separate DLLs containing your
localized resources.

.NET Framework supports satellite DLLs implicitly by probing in folders
named after cultures (e.g. en-US, de-DE) before looking in language-neutral
folders. See "Creating Satellite Assemblies" at
http://msdn2.microsoft.com/en-us/library/21a15yht.aspx and the
System.Resources.ResourceManager class.

MFC supports loading resources from a different DLL instance than the
application or DLL. See Tech Note 57 for MFC 6.0 at
http://msdn2.microsoft.com/en-us/library/x6h91d9w.aspx or "Localized
Resources in MFC Applications: Satellite DLLs" at
http://msdn2.microsoft.com/en-us/library/8fkteez0.aspx for MFC 7.0 and
later.

ATL also supports setting a resource instance: see SetResourceInstance (ATL
7.0 and later) or set the m_hInstResource for ATL 3.0 and earlier.

Finally Windows Vista has added a mechanism they're calling MUI Technology,
for which see "Multilingual User Interface" in the SDK at
http://msdn2.microsoft.com/en-us/library/ms776201.aspx.

None of this obviously helps if you have already authored your application
relying on being able to install localized strings in the installation
package.

-- 
Mike Dimmick

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of DEÁK JAHN,
Gábor
Sent: 14 December 2007 01:36
To: WiX-users
Subject: [WiX-users] Unicode. Unicode?

Hello,

did anybody find a way to make codepage 65001 work? I don't need CJK but a
couple of Latin 3 (ISO-8859-3) characters, sadly not supported by any of the
Windows codepages. Building the MSI seems to go all right but it refuses to
run with an error: "This installation package could not be opened. Contact
the application vendor to verify that this is a valid Windows Installer
package."




-------------------------------------------------------------------------
SF.Net email is sponsored by:
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services
for just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to