I'm making the Unicode version of MakeNsis able to generate both ANSI &
Unicode installers
So we don't have to release two variant of NSIS and we can have
everybody use only the Unicode version once and for all
It's almost complete already..
This is what I have done so far :
* For compatibility, Unicode NSIS supports ANSI scripts file,
including langage-dependent codepaged LangString
* I've add a UnicodeInstaller on/off keyword.
* NSIS_UNICODE & NSIS_CHAR_SIZE defines are automatically adjusted
depending on UnicodeInstaller
* When establishing the list of plugins available, if plugins
Sample.dll and SampleW.dll is found, it will consider SampleW to
be the Unicode variant of Sample, and use it if it generates a
Unicode installer, mapping Sample::function calls to
SampleW::function . (The script author can still decide to
explicitely call SampleW::functions)
* When determining which Stub to use, makensis adds a 'W' suffix for
Unicode installers (i.e : lzmaW is the Unicode variant of the lzma
stub)
* I've added a InstallOptionsW::make_unicode function (specific to
the Unicode variant of InstallOptions) to convert automatically
the .INI files (standard ones or ones provided by the user) to
Unicode, so that WriteINIStr can write Unicode captions in it
And it works great !
I've verified that when generating an ANSI installer, the bytes are
exactly identical to what ANSI NSIS generates.
This is what I plan to improve :
* Instead of UnicodeInstaller keyword, we could use a
TargetMinimalOS <major.minor> so that the script author can tell
NSIS what API of Windows the installer will be allowed to use.
o If <major.minor> is 5.0 or more (= Windows 2000 or more
recent), a Unicode installer will be generated
o This is a more generic approach than UnicodeInstaller
o The stub suffix could then become this major.minor instead
of 'W' (like lzma.5.0)
o This way we can create stubs that take advantage of specific
versions of Windows
Also, we will need to change SConstruct so that it builds Plugins and
the Stub in BOTH ANSI & Unicode (with specific names as described above)
I have a very small understanding of Scons, so if someone could help me
with that, it would be nice.
|