Added WriteRegNone
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@6863 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
parent
6271e87972
commit
204dbb0443
6 changed files with 13 additions and 11 deletions
|
@ -12,7 +12,7 @@ Released on ? ?th, 2017
|
|||
|
||||
\b Added \R{execshellwait}{ExecShellWait}
|
||||
|
||||
\b Added \R{writeregmultistr}{WriteRegMultiStr} (\W{http://sf.net/p/nsis/feature-requests/382}{RFE #382}, \W{http://sf.net/p/nsis/patches/219}{patch #219})
|
||||
\b Added \R{writeregmultistr}{WriteRegMultiStr} (\W{http://sf.net/p/nsis/feature-requests/382}{RFE #382}, \W{http://sf.net/p/nsis/patches/219}{patch #219}) and WriteRegNone
|
||||
|
||||
\b Added \R{pragma}{!pragma warning} (\W{http://sf.net/p/nsis/patches/267}{patch #267})
|
||||
|
||||
|
|
|
@ -656,6 +656,7 @@ typedef DWORDLONG ULONGLONG,*PULONGLONG;
|
|||
#endif
|
||||
|
||||
#ifndef REG_SZ
|
||||
# define REG_NONE 0
|
||||
# define REG_SZ 1
|
||||
# define REG_EXPAND_SZ 2
|
||||
# define REG_BINARY 3
|
||||
|
|
|
@ -1273,11 +1273,12 @@ static int NSISCALL ExecuteEntry(entry *entry_)
|
|||
{
|
||||
#ifdef NSIS_CONFIG_LOG
|
||||
TCHAR binbuf[128];
|
||||
LPCTSTR logf = rtype==REG_NONE?_T("WriteRegNone"):rtype==REG_MULTI_SZ?_T("WriteRegMultiStr"):_T("WriteRegBin");
|
||||
#endif
|
||||
// use buf2, buf3 and buf4
|
||||
size = GetCompressedDataFromDataBlockToMemory(parm3, data, (3 * NSIS_MAX_STRLEN)*sizeof(TCHAR));
|
||||
LogData2Hex(binbuf, COUNTOF(binbuf), data, size);
|
||||
log_printf6(_T("%s: \"%s\\%s\" \"%s\"=\"%s\""),rtype==REG_MULTI_SZ?_T("WriteRegMultiStr"):_T("WriteRegBin"),rkn,buf1,buf0,binbuf);
|
||||
log_printf6(_T("%s: \"%s\\%s\" \"%s\"=\"%s\""),logf,rkn,buf1,buf0,binbuf);
|
||||
}
|
||||
|
||||
if (size >= 0 && RegSetValueEx(hKey,buf0,0,rtype,data,size) == ERROR_SUCCESS)
|
||||
|
@ -1302,8 +1303,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
|
|||
p[0]=0;
|
||||
if (hKey)
|
||||
{
|
||||
DWORD l = NSIS_MAX_STRLEN*sizeof(TCHAR);
|
||||
DWORD t;
|
||||
DWORD l = NSIS_MAX_STRLEN*sizeof(TCHAR), t;
|
||||
|
||||
// Jim Park: If plain text in p or binary data in p,
|
||||
// user must be careful in accessing p correctly.
|
||||
|
|
|
@ -4209,14 +4209,13 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
|
|||
SCRIPT_MSG(_T("DeleteRegValue: %") NPRIs _T("\\%") NPRIs _T("\\%") NPRIs _T("\n"),line.gettoken_str(a),line.gettoken_str(a+1),line.gettoken_str(a+2));
|
||||
}
|
||||
return add_entry(&ent);
|
||||
case TOK_WRITEREGSTR:
|
||||
case TOK_WRITEREGEXPANDSTR:
|
||||
case TOK_WRITEREGBIN:
|
||||
case TOK_WRITEREGSTR: case TOK_WRITEREGEXPANDSTR:
|
||||
case TOK_WRITEREGBIN: case TOK_WRITEREGNONE:
|
||||
case TOK_WRITEREGMULTISZ:
|
||||
case TOK_WRITEREGDWORD:
|
||||
{
|
||||
const TCHAR*cmdname=get_commandtoken_name(which_token);
|
||||
int reg5=0==line.gettoken_enum(1,_T("/REGEDIT5\0")), multisz=which_token==TOK_WRITEREGMULTISZ;
|
||||
int reg5=0==line.gettoken_enum(1,_T("/REGEDIT5\0")), multisz=which_token == TOK_WRITEREGMULTISZ;
|
||||
if (reg5) line.eattoken();
|
||||
int k=line.gettoken_enum(1,rootkeys[0]);
|
||||
if (k == -1) k=line.gettoken_enum(1,rootkeys[1]);
|
||||
|
@ -4236,10 +4235,10 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
|
|||
if (which_token == TOK_WRITEREGEXPANDSTR)
|
||||
ent.offsets[5]=REG_EXPAND_SZ;
|
||||
}
|
||||
if (which_token == TOK_WRITEREGBIN || multisz)
|
||||
if (which_token == TOK_WRITEREGBIN || multisz || which_token == TOK_WRITEREGNONE)
|
||||
{
|
||||
char data[3*NSIS_MAX_STRLEN];
|
||||
int data_len=line.gettoken_binstrdata(4, data, sizeof(data));
|
||||
int data_len=line.gettoken_binstrdata(4, data, sizeof(data)), none=which_token == TOK_WRITEREGNONE;
|
||||
if (data_len < 0)
|
||||
{
|
||||
if (data_len == -2) PRINTHELPEX(cmdname);
|
||||
|
@ -4252,7 +4251,7 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
|
|||
if (multisz && !build_unicode) for (int p1=0, p2=p1; p1 < data_len; data_len--) data[p1++]=data[p2], p2+=2; // BUGBUG: Should convert each string from UTF-16 to DBCS but only exehead knows the codepage, limited to ASCII for now.
|
||||
ent.offsets[3]=add_db_data(data,data_len);
|
||||
if (ent.offsets[3] < 0) return PS_ERROR;
|
||||
ent.offsets[4]=REG_BINARY, ent.offsets[5]=multisz?REG_MULTI_SZ:REG_BINARY;
|
||||
ent.offsets[4]=REG_BINARY, ent.offsets[5]=none?REG_NONE:multisz?REG_MULTI_SZ:REG_BINARY;
|
||||
}
|
||||
if (which_token == TOK_WRITEREGDWORD)
|
||||
{
|
||||
|
|
|
@ -241,6 +241,7 @@ static tokenType tokenlist[TOK__LAST] =
|
|||
{TOK_WRITEREGDWORD,_T("WriteRegDWORD"),4,0,_T("rootkey subkey entry_name new_value_dword\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_WRITEREGNONE,_T("WriteRegNone"),3,1,_T("rootkey subkey entry_name [hex_data]\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_PEDLLCHARACTERISTICS, _T("PEDllCharacteristics"),2,0,_T("addbits removebits"),TP_GLOBAL},
|
||||
{TOK_PESUBSYSVER, _T("PESubsysVer"),1,0,_T("major.minor"),TP_GLOBAL},
|
||||
|
|
|
@ -190,6 +190,7 @@ enum
|
|||
TOK_WRITEREGBIN,
|
||||
TOK_WRITEREGMULTISZ,
|
||||
TOK_WRITEREGDWORD,
|
||||
TOK_WRITEREGNONE,
|
||||
TOK_DELETEINISEC,
|
||||
TOK_DELETEINISTR,
|
||||
TOK_FLUSHINI,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue