Added PEDllCharacteristics attribute and changed default DllCharacteristics to TS_AWARE+NO_SEH+NX_COMPAT+DYNAMIC_BASE
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@6537 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
parent
0f264e9f5a
commit
3c2a937cab
7 changed files with 31 additions and 4 deletions
|
@ -26,6 +26,10 @@ Released on ?, 2014
|
||||||
|
|
||||||
\b Added WX compiler switch
|
\b Added WX compiler switch
|
||||||
|
|
||||||
|
\b Added PEDllCharacteristics attribute
|
||||||
|
|
||||||
|
\b Changed default DllCharacteristics to TS_AWARE+NO_SEH+NX_COMPAT+DYNAMIC_BASE
|
||||||
|
|
||||||
\b Fixed POSIX !searchparse bug (\W{http://sf.net/p/nsis/patches/251}{patch #251})
|
\b Fixed POSIX !searchparse bug (\W{http://sf.net/p/nsis/patches/251}{patch #251})
|
||||||
|
|
||||||
\b Fixed !macroundef
|
\b Fixed !macroundef
|
||||||
|
|
|
@ -776,6 +776,15 @@ typedef DWORDLONG ULONGLONG,*PULONGLONG;
|
||||||
# define IMAGE_DIRECTORY_ENTRY_EXPORT 0
|
# define IMAGE_DIRECTORY_ENTRY_EXPORT 0
|
||||||
# define IMAGE_SIZEOF_SHORT_NAME 8
|
# define IMAGE_SIZEOF_SHORT_NAME 8
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE
|
||||||
|
#define IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE 0x0040
|
||||||
|
#endif
|
||||||
|
#ifndef IMAGE_DLLCHARACTERISTICS_NX_COMPAT
|
||||||
|
#define IMAGE_DLLCHARACTERISTICS_NX_COMPAT 0x0100
|
||||||
|
#endif
|
||||||
|
#ifndef IMAGE_DLLCHARACTERISTICS_NO_SEH
|
||||||
|
#define IMAGE_DLLCHARACTERISTICS_NO_SEH 0x0400
|
||||||
|
#endif
|
||||||
#ifndef IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE
|
#ifndef IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE
|
||||||
#define IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE 0x8000
|
#define IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE 0x8000
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -277,6 +277,7 @@ CEXEBuild::CEXEBuild(signed char pponly) :
|
||||||
|
|
||||||
res_editor=0;
|
res_editor=0;
|
||||||
|
|
||||||
|
PEDllCharacteristics = IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE|IMAGE_DLLCHARACTERISTICS_NO_SEH|IMAGE_DLLCHARACTERISTICS_NX_COMPAT|IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE; //forums.winamp.com/showthread.php?t=344755
|
||||||
manifest_comctl = manifest::comctl_old;
|
manifest_comctl = manifest::comctl_old;
|
||||||
manifest_exec_level = manifest::exec_level_none;
|
manifest_exec_level = manifest::exec_level_none;
|
||||||
manifest_dpiaware = manifest::dpiaware_notset;
|
manifest_dpiaware = manifest::dpiaware_notset;
|
||||||
|
@ -2401,10 +2402,10 @@ int CEXEBuild::UpdatePEHeader()
|
||||||
try {
|
try {
|
||||||
PIMAGE_NT_HEADERS headers = CResourceEditor::GetNTHeaders(m_exehead);
|
PIMAGE_NT_HEADERS headers = CResourceEditor::GetNTHeaders(m_exehead);
|
||||||
// workaround for bug #2697027, #2725883, #2803097
|
// workaround for bug #2697027, #2725883, #2803097
|
||||||
headers->OptionalHeader.MajorImageVersion = 6;
|
headers->OptionalHeader.MajorImageVersion = FIX_ENDIAN_INT16(6);
|
||||||
headers->OptionalHeader.MinorImageVersion = 0;
|
headers->OptionalHeader.MinorImageVersion = FIX_ENDIAN_INT16(0);
|
||||||
// terminal services aware
|
// DllCharacteristics
|
||||||
headers->OptionalHeader.DllCharacteristics |= IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE;
|
headers->OptionalHeader.DllCharacteristics = FIX_ENDIAN_INT16(PEDllCharacteristics);
|
||||||
} catch (std::runtime_error& err) {
|
} catch (std::runtime_error& err) {
|
||||||
ERROR_MSG(_T("Error updating PE headers: %") NPRIs _T("\n"), CtoTStrParam(err.what()));
|
ERROR_MSG(_T("Error updating PE headers: %") NPRIs _T("\n"), CtoTStrParam(err.what()));
|
||||||
return PS_ERROR;
|
return PS_ERROR;
|
||||||
|
|
|
@ -531,6 +531,7 @@ class CEXEBuild {
|
||||||
int deflateToFile(FILE *fp, char *buf, int len); // len==0 to flush
|
int deflateToFile(FILE *fp, char *buf, int len); // len==0 to flush
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
WORD PEDllCharacteristics;
|
||||||
manifest::comctl manifest_comctl;
|
manifest::comctl manifest_comctl;
|
||||||
manifest::exec_level manifest_exec_level;
|
manifest::exec_level manifest_exec_level;
|
||||||
manifest::dpiaware manifest_dpiaware;
|
manifest::dpiaware manifest_dpiaware;
|
||||||
|
|
|
@ -2808,6 +2808,16 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
|
||||||
return PS_ERROR;
|
return PS_ERROR;
|
||||||
#endif// NSIS_CONFIG_VISIBLE_SUPPORT
|
#endif// NSIS_CONFIG_VISIBLE_SUPPORT
|
||||||
|
|
||||||
|
case TOK_PEDLLCHARACTERISTICS:
|
||||||
|
{
|
||||||
|
int s1, s2;
|
||||||
|
WORD add = (WORD)line.gettoken_int(1, &s1), del = (WORD)line.gettoken_int(2, &s2), org = PEDllCharacteristics;
|
||||||
|
if (!s1 || !s2) PRINTHELP();
|
||||||
|
PEDllCharacteristics &= ~del, PEDllCharacteristics |= add;
|
||||||
|
SCRIPT_MSG(_T("PEDllCharacteristics: 0x%.4x -> 0x%.4x\n"), org, PEDllCharacteristics);
|
||||||
|
}
|
||||||
|
return PS_OK;
|
||||||
|
|
||||||
case TOK_REQEXECLEVEL:
|
case TOK_REQEXECLEVEL:
|
||||||
switch (line.gettoken_enum(1,_T("none\0user\0highest\0admin\0")))
|
switch (line.gettoken_enum(1,_T("none\0user\0highest\0admin\0")))
|
||||||
{
|
{
|
||||||
|
|
|
@ -238,6 +238,7 @@ static tokenType tokenlist[TOK__LAST] =
|
||||||
{TOK_WRITEREGSTR,_T("WriteRegStr"),4,0,_T("rootkey subkey entry_name new_value_string\n root_key=(HKCR|HKLM|HKCU|HKU|HKCC|HKDD|HKPD|SHCTX)"),TP_CODE},
|
{TOK_WRITEREGSTR,_T("WriteRegStr"),4,0,_T("rootkey subkey entry_name new_value_string\n root_key=(HKCR|HKLM|HKCU|HKU|HKCC|HKDD|HKPD|SHCTX)"),TP_CODE},
|
||||||
{TOK_WRITEREGEXPANDSTR,_T("WriteRegExpandStr"),4,0,_T("rootkey subkey entry_name new_value_string\n root_key=(HKCR|HKLM|HKCU|HKU|HKCC|HKDD|HKPD|SHCTX)"),TP_CODE},
|
{TOK_WRITEREGEXPANDSTR,_T("WriteRegExpandStr"),4,0,_T("rootkey subkey entry_name new_value_string\n root_key=(HKCR|HKLM|HKCU|HKU|HKCC|HKDD|HKPD|SHCTX)"),TP_CODE},
|
||||||
{TOK_WRITEUNINSTALLER,_T("WriteUninstaller"),1,0,_T("uninstall_exe_name"),TP_CODE},
|
{TOK_WRITEUNINSTALLER,_T("WriteUninstaller"),1,0,_T("uninstall_exe_name"),TP_CODE},
|
||||||
|
{TOK_PEDLLCHARACTERISTICS, _T("PEDllCharacteristics"),2,0,_T("addbits removebits"),TP_GLOBAL},
|
||||||
{TOK_XPSTYLE, _T("XPStyle"),1,0,_T("(on|off)"),TP_GLOBAL},
|
{TOK_XPSTYLE, _T("XPStyle"),1,0,_T("(on|off)"),TP_GLOBAL},
|
||||||
{TOK_REQEXECLEVEL, _T("RequestExecutionLevel"),1,0,_T("none|user|highest|admin"),TP_GLOBAL},
|
{TOK_REQEXECLEVEL, _T("RequestExecutionLevel"),1,0,_T("none|user|highest|admin"),TP_GLOBAL},
|
||||||
{TOK_MANIFEST_DPIAWARE,_T("ManifestDPIAware"),1,0,_T("notset|true|false"),TP_GLOBAL},
|
{TOK_MANIFEST_DPIAWARE,_T("ManifestDPIAware"),1,0,_T("notset|true|false"),TP_GLOBAL},
|
||||||
|
|
|
@ -59,6 +59,7 @@ enum
|
||||||
TOK_BRANDINGTEXT,
|
TOK_BRANDINGTEXT,
|
||||||
TOK_FILEERRORTEXT,
|
TOK_FILEERRORTEXT,
|
||||||
TOK_INSTPROGRESSFLAGS,
|
TOK_INSTPROGRESSFLAGS,
|
||||||
|
TOK_PEDLLCHARACTERISTICS,
|
||||||
TOK_XPSTYLE,
|
TOK_XPSTYLE,
|
||||||
TOK_REQEXECLEVEL,
|
TOK_REQEXECLEVEL,
|
||||||
TOK_MANIFEST_DPIAWARE,
|
TOK_MANIFEST_DPIAWARE,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue