Unicode port: Unicode version of NSIS can now generate both ANSI & Unicode installers (using new instruction UnicodeInstaller on/off).

Stubs & Plugins differentiation is done automatically using a 'W' suffix.
SConscripts need to be reviewed to generate both variants of Plugins & pluginapi.lib under Unicode compilation.

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@6100 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
wizou 2010-06-14 10:07:22 +00:00
parent fbc7cb8fd0
commit 57f7ff8a1c
24 changed files with 376 additions and 112 deletions

View file

@ -24,19 +24,27 @@ example = Split("""
extdll.inc
""")
Import('env plugin_env')
Import('env plugin_env plugin_uenv')
# build library
api_env = env.Clone()
api_env.Append(CPPPATH = ['#Source/exehead'])
lib = api_env.Library(lib_target, lib_files)
# in Unicode compilation, we should really build both variants but I can't get it to work [Wizou]
if env['UNICODE']:
api_uenv = plugin_uenv.Clone()
api_uenv.Append(CPPPATH = ['#Source/exehead'])
libW = api_uenv.Library(lib_target+'W', lib_files)
lib = libW
else:
api_env = plugin_env.Clone()
api_env.Append(CPPPATH = ['#Source/exehead'])
lib = api_env.Library(lib_target, lib_files)
# distribute library, files and examples
env.DistributeExamples(api_files, path='Plugin/nsis')
if env['PLATFORM'] == 'win32':
if env['UNICODE']:
env.DistributeExamples(libW, lib_target+".lib", path='Plugin/nsis')
env.DistributeExamples(lib, path='Plugin/nsis')
else:
@ -57,3 +65,6 @@ env.Install('#$BUILD_PREFIX/api/nsis', api_files + lib)
plugin_env.Append(CPPPATH = ['#$BUILD_PREFIX/api'])
plugin_env.Append(LIBPATH = ['#$BUILD_PREFIX/api/nsis'])
plugin_env.Append(LIBS = [lib_target])
plugin_uenv.Append(CPPPATH = ['#$BUILD_PREFIX/api'])
plugin_uenv.Append(LIBPATH = ['#$BUILD_PREFIX/api/nsis'])
plugin_uenv.Append(LIBS = [lib_target+'W'])

View file

@ -126,7 +126,7 @@ Macros and conversion functions for InstallOptions
InitPluginsDir
File "/oname=$PLUGINSDIR\${FILE}" "${FILE}"
!ifdef NSIS_UNICODE
InstallOptions::make_unicode "$PLUGINSDIR\${FILE}"
InstallOptionsW::make_unicode "$PLUGINSDIR\${FILE}"
!endif
!insertmacro INSTALLOPTIONS_WRITE "${FILE}" "Settings" "RTL" "$(^RTL)"
@ -139,7 +139,7 @@ Macros and conversion functions for InstallOptions
InitPluginsDir
File "/oname=$PLUGINSDIR\${FILENAME}" "${FILE}"
!ifdef NSIS_UNICODE
InstallOptions::make_unicode "$PLUGINSDIR\${FILENAME}"
InstallOptionsW::make_unicode "$PLUGINSDIR\${FILENAME}"
!endif
!insertmacro INSTALLOPTIONS_WRITE "${FILENAME}" "Settings" "RTL" "$(^RTL)"

View file

@ -706,7 +706,9 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
}
DWORD WINAPI MakeNSISProc(LPVOID p) {
#ifdef _UNICODE
TCHAR buf[1024];
#endif
char iobuf[1024]; //i/o buffer
STARTUPINFO si={sizeof(si),};
SECURITY_ATTRIBUTES sa={sizeof(sa),};