Include CPU architecture in the RegTool filename so Library.nsh always picks the correct version
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@6859 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
parent
d80b364e1d
commit
ce7078517f
7 changed files with 25 additions and 32 deletions
|
@ -49,7 +49,7 @@ template<class T> BOOL CreateProcess(const T*p1,const T*p2,LPSECURITY_ATTRIBUTES
|
||||||
|
|
||||||
static bool IsWinNT()
|
static bool IsWinNT()
|
||||||
{
|
{
|
||||||
#ifdef _WIN64
|
#if defined(_WIN64) || (defined(_M_ARM) || defined(__arm__))
|
||||||
return true;
|
return true;
|
||||||
#else
|
#else
|
||||||
LPCWSTR str = L"count"; // Using this string because it's already used in other parts of the code
|
LPCWSTR str = L"count"; // Using this string because it's already used in other parts of the code
|
||||||
|
|
|
@ -12,6 +12,8 @@ libs = Split("""
|
||||||
ole32
|
ole32
|
||||||
""")
|
""")
|
||||||
|
|
||||||
Import('BuildUtil')
|
Import('BuildUtil env GetArcCPU')
|
||||||
|
|
||||||
BuildUtil(target, files, libs, entry = 'NSISWinMainNOCRT', nodeflib = True, file_name = 'RegTool.bin')
|
filename = 'RegTool-' + GetArcCPU(env) + '.bin'
|
||||||
|
|
||||||
|
BuildUtil(target, files, libs, entry = 'NSISWinMainNOCRT', nodeflib = True, file_name = filename)
|
||||||
|
|
|
@ -121,21 +121,15 @@
|
||||||
;------------------------
|
;------------------------
|
||||||
;Setup RegTool
|
;Setup RegTool
|
||||||
|
|
||||||
!ifdef NSIS_MAKENSIS64
|
!if ! /FileExists "${NSISDIR}\Bin\RegTool-${NSIS_CPU}.bin"
|
||||||
!if "${NSIS_PTR_SIZE}" < 8
|
!error "Missing RegTool for ${NSIS_CPU}!"
|
||||||
!error "Incompatible RegTool bitness, compile with 32-bit NSIS!" ; 64-bit RegTool on 32-bit Windows
|
|
||||||
!endif
|
|
||||||
!else
|
|
||||||
!if "${NSIS_PTR_SIZE}" > 4
|
|
||||||
!warning "Incompatible RegTool bitness!" ; 32-bit RegTool will probably fail to register 64-bit library
|
|
||||||
!endif
|
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
ReadRegStr $R3 HKLM "Software\Microsoft\Windows\CurrentVersion\RunOnce" "${REGTOOL_KEY}"
|
ReadRegStr $R3 HKLM "Software\Microsoft\Windows\CurrentVersion\RunOnce" "${REGTOOL_KEY}"
|
||||||
StrCpy $R3 $R3 -4 1
|
StrCpy $R3 $R3 -4 1
|
||||||
IfFileExists $R3 +3
|
IfFileExists $R3 +3
|
||||||
|
|
||||||
File /oname=$R2\${REGTOOL_KEY}.$__INSTALLLLIB_SESSIONGUID.exe "${NSISDIR}\Bin\RegTool.bin"
|
File /oname=$R2\${REGTOOL_KEY}.$__INSTALLLLIB_SESSIONGUID.exe "${NSISDIR}\Bin\RegTool-${NSIS_CPU}.bin"
|
||||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\RunOnce" \
|
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\RunOnce" \
|
||||||
"${REGTOOL_KEY}" '"$R2\${REGTOOL_KEY}.$__INSTALLLLIB_SESSIONGUID.exe" /S'
|
"${REGTOOL_KEY}" '"$R2\${REGTOOL_KEY}.$__INSTALLLLIB_SESSIONGUID.exe" /S'
|
||||||
|
|
||||||
|
|
|
@ -67,21 +67,15 @@ Example:
|
||||||
;------------------------
|
;------------------------
|
||||||
;Setup RegTool
|
;Setup RegTool
|
||||||
|
|
||||||
!ifdef NSIS_MAKENSIS64
|
!if ! /FileExists "${NSISDIR}\Bin\RegTool-${NSIS_CPU}.bin"
|
||||||
!if "${NSIS_PTR_SIZE}" < 8
|
!error "Missing RegTool for ${NSIS_CPU}!"
|
||||||
!error "Incompatible RegTool bitness, compile with 32-bit NSIS!" ; 64-bit RegTool on 32-bit Windows
|
|
||||||
!endif
|
|
||||||
!else
|
|
||||||
!if "${NSIS_PTR_SIZE}" > 4
|
|
||||||
!warning "Incompatible RegTool bitness!" ; 32-bit RegTool will probably fail to register 64-bit library
|
|
||||||
!endif
|
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
ReadRegStr $R3 HKLM "Software\Microsoft\Windows\CurrentVersion\RunOnce" "NSIS.Library.RegTool.v3"
|
ReadRegStr $R3 HKLM "Software\Microsoft\Windows\CurrentVersion\RunOnce" "NSIS.Library.RegTool.v3"
|
||||||
StrCpy $R3 $R3 -4 1
|
StrCpy $R3 $R3 -4 1
|
||||||
IfFileExists $R3 +3
|
IfFileExists $R3 +3
|
||||||
|
|
||||||
File /oname=$R2\NSIS.Library.RegTool.v3.$HWNDPARENT.exe "${NSISDIR}\Bin\RegTool.bin"
|
File /oname=$R2\NSIS.Library.RegTool.v3.$HWNDPARENT.exe "${NSISDIR}\Bin\RegTool-${NSIS_CPU}.bin"
|
||||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\RunOnce" \
|
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\RunOnce" \
|
||||||
"NSIS.Library.RegTool.v3" '"$R2\NSIS.Library.RegTool.v3.$HWNDPARENT.exe" /S'
|
"NSIS.Library.RegTool.v3" '"$R2\NSIS.Library.RegTool.v3.$HWNDPARENT.exe" /S'
|
||||||
|
|
||||||
|
|
16
SConstruct
16
SConstruct
|
@ -207,13 +207,13 @@ if defenv['DEBUG']:
|
||||||
defenv.Append(CPPDEFINES = ['DEBUG'])
|
defenv.Append(CPPDEFINES = ['DEBUG'])
|
||||||
|
|
||||||
# add prefixes defines
|
# add prefixes defines
|
||||||
if 'NSIS_CONFIG_CONST_DATA_PATH' in defenv['NSIS_CPPDEFINES']:
|
if 'NSIS_CONFIG_CONST_DATA_PATH' in defenv['NSIS_CPPDEFINES']:
|
||||||
defenv.Append(NSIS_CPPDEFINES = [('PREFIX_CONF', '"%s"' % defenv.subst('$PREFIX_CONF'))])
|
defenv.Append(NSIS_CPPDEFINES = [('PREFIX_CONF', '"%s"' % defenv.subst('$PREFIX_CONF'))])
|
||||||
defenv.Append(NSIS_CPPDEFINES = [('PREFIX_DATA', '"%s"' % defenv.subst('$PREFIX_DATA'))])
|
defenv.Append(NSIS_CPPDEFINES = [('PREFIX_DATA', '"%s"' % defenv.subst('$PREFIX_DATA'))])
|
||||||
defenv.Append(NSIS_CPPDEFINES = [('PREFIX_DOC', '"%s"' % defenv.subst('$PREFIX_DOC'))])
|
defenv.Append(NSIS_CPPDEFINES = [('PREFIX_DOC', '"%s"' % defenv.subst('$PREFIX_DOC'))])
|
||||||
|
|
||||||
# Need this early for the config header files to be placed in
|
# Need this early for the config header files to be placed in
|
||||||
if defenv['UNICODE']:
|
if defenv['UNICODE']:
|
||||||
if defenv['DEBUG']:
|
if defenv['DEBUG']:
|
||||||
defenv.Replace(BUILD_PREFIX = 'build/udebug')
|
defenv.Replace(BUILD_PREFIX = 'build/udebug')
|
||||||
else:
|
else:
|
||||||
|
@ -791,7 +791,7 @@ for util in utils:
|
||||||
|
|
||||||
path = 'Contrib/' + util
|
path = 'Contrib/' + util
|
||||||
build_dir = '$BUILD_PREFIX/' + util
|
build_dir = '$BUILD_PREFIX/' + util
|
||||||
exports = {'BuildUtil' : BuildUtil, 'BuildUtilEnv' : BuildUtilEnv, 'env' : util_env}
|
exports = {'BuildUtil' : BuildUtil, 'BuildUtilEnv' : BuildUtilEnv, 'env' : util_env, 'GetArcCPU' : GetArcCPU}
|
||||||
|
|
||||||
defenv.SConscript(dirs = path, variant_dir = build_dir, duplicate = False, exports = exports)
|
defenv.SConscript(dirs = path, variant_dir = build_dir, duplicate = False, exports = exports)
|
||||||
|
|
||||||
|
|
|
@ -134,7 +134,7 @@ CEXEBuild::CEXEBuild(signed char pponly) :
|
||||||
|
|
||||||
m_target_type=TARGET_X86ANSI;
|
m_target_type=TARGET_X86ANSI;
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
if (sizeof(void*) > 4) m_target_type = TARGET_AMD64; // BUGBUG: There is no instruction to select it so we force
|
if (sizeof(void*) > 4) m_target_type = TARGET_AMD64; // BUGBUG: scons 'TARGET_ARCH' should specify the default
|
||||||
#endif
|
#endif
|
||||||
build_unicode=TARGET_X86ANSI != m_target_type;
|
build_unicode=TARGET_X86ANSI != m_target_type;
|
||||||
build_lockedunicodetarget=false;
|
build_lockedunicodetarget=false;
|
||||||
|
@ -3844,7 +3844,7 @@ bool CEXEBuild::IsIntOrUserVar(const LineParser &line, int token) const
|
||||||
}
|
}
|
||||||
int succ;
|
int succ;
|
||||||
line.gettoken_int(token, &succ);
|
line.gettoken_int(token, &succ);
|
||||||
return !!succ;
|
return succ != false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CEXEBuild::set_target_architecture_data()
|
int CEXEBuild::set_target_architecture_data()
|
||||||
|
@ -3863,6 +3863,9 @@ int CEXEBuild::set_target_architecture_data()
|
||||||
}
|
}
|
||||||
definedlist.set(_T("NSIS_PTR_SIZE"), is_target_64bit() ? _T("8") : _T("4"));
|
definedlist.set(_T("NSIS_PTR_SIZE"), is_target_64bit() ? _T("8") : _T("4"));
|
||||||
|
|
||||||
|
tstring cpu = get_string_prefix(get_target_suffix(m_target_type), _T("-"));
|
||||||
|
definedlist.set(_T("NSIS_CPU"), cpu.c_str()); // Used by Library.nsh to pick the correct RegTool
|
||||||
|
|
||||||
definedlist.del(_T("NSIS_IX86"));
|
definedlist.del(_T("NSIS_IX86"));
|
||||||
definedlist.del(_T("NSIS_AMD64"));
|
definedlist.del(_T("NSIS_AMD64"));
|
||||||
if (TARGET_AMD64 == m_target_type)
|
if (TARGET_AMD64 == m_target_type)
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
|
|
||||||
extern double my_wtof(const wchar_t *str);
|
extern double my_wtof(const wchar_t *str);
|
||||||
extern size_t my_strncpy(TCHAR*Dest, const TCHAR*Src, size_t cchMax);
|
extern size_t my_strncpy(TCHAR*Dest, const TCHAR*Src, size_t cchMax);
|
||||||
static bool strtrycpy(TCHAR*Dest, const TCHAR*Src, size_t cchCap) { size_t c = my_strncpy(Dest, Src, cchCap); return c < cchCap && !Src[c]; }
|
template<class T> bool strtrycpy(T*Dest, const T*Src, size_t cchCap) { size_t c = my_strncpy(Dest, Src, cchCap); return c < cchCap && !Src[c]; }
|
||||||
size_t my_strftime(TCHAR *s, size_t max, const TCHAR *fmt, const struct tm *tm);
|
size_t my_strftime(TCHAR *s, size_t max, const TCHAR *fmt, const struct tm *tm);
|
||||||
|
|
||||||
// Adds the bitmap in filename using resource editor re as id id.
|
// Adds the bitmap in filename using resource editor re as id id.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue