- All message boxes in code now have a default for silent installers
- Some size optimizations git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@3221 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
parent
0139636e18
commit
f6ebb29045
9 changed files with 101 additions and 117 deletions
|
@ -9,7 +9,7 @@ const int kNumRepDistances = 4;
|
||||||
|
|
||||||
const int kNumStates = 12;
|
const int kNumStates = 12;
|
||||||
|
|
||||||
const BYTE kLiteralNextStates[kNumStates] = {0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 4, 5};
|
const BYTE kLiteralNextStates[kNumStates] = {0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 4, 5};
|
||||||
const BYTE kMatchNextStates[kNumStates] = {7, 7, 7, 7, 7, 7, 7, 10, 10, 10, 10, 10};
|
const BYTE kMatchNextStates[kNumStates] = {7, 7, 7, 7, 7, 7, 7, 10, 10, 10, 10, 10};
|
||||||
const BYTE kRepNextStates[kNumStates] = {8, 8, 8, 8, 8, 8, 8, 11, 11, 11, 11, 11};
|
const BYTE kRepNextStates[kNumStates] = {8, 8, 8, 8, 8, 8, 8, 11, 11, 11, 11, 11};
|
||||||
const BYTE kShortRepNextStates[kNumStates]= {9, 9, 9, 9, 9, 9, 9, 11, 11, 11, 11, 11};
|
const BYTE kShortRepNextStates[kNumStates]= {9, 9, 9, 9, 9, 9, 9, 11, 11, 11, 11, 11};
|
||||||
|
|
|
@ -7,7 +7,6 @@ void CLZMADecoder::Create(BYTE *memoryPointer,
|
||||||
int numLiteralPosStateBits,
|
int numLiteralPosStateBits,
|
||||||
int numPosStateBits)
|
int numPosStateBits)
|
||||||
{
|
{
|
||||||
|
|
||||||
int numPosStates = 1 << numPosStateBits;
|
int numPosStates = 1 << numPosStateBits;
|
||||||
m_PosStateMask = numPosStates - 1;
|
m_PosStateMask = numPosStates - 1;
|
||||||
m_LiteralDecoder.Create(memoryPointer, numLiteralPosStateBits, numLiteralContextBits);
|
m_LiteralDecoder.Create(memoryPointer, numLiteralPosStateBits, numLiteralContextBits);
|
||||||
|
@ -139,15 +138,14 @@ UINT32 CLZMADecoder::Code(CLZMAStateP lzmaState)
|
||||||
repDistances[2] = repDistances[1];
|
repDistances[2] = repDistances[1];
|
||||||
repDistances[1] = repDistances[0];
|
repDistances[1] = repDistances[0];
|
||||||
repDistances[0] = distance;
|
repDistances[0] = distance;
|
||||||
|
//LZMAMemCopy(repDistances, repDistances + 1, kNumRepDistances * sizeof(UINT32));
|
||||||
}
|
}
|
||||||
if (distance > nowPos || distance == 0)
|
// it's for stream version (without knowing uncompressed size)
|
||||||
{
|
//if (distance >= _dictionarySizeCheck)
|
||||||
// it's for stream version (without knowing uncompressed size)
|
if (!distance)
|
||||||
// if (distance >= _dictionarySizeCheck)
|
break;
|
||||||
if (distance == (UINT32)(0))
|
if (distance > nowPos)
|
||||||
break;
|
|
||||||
return (-1);
|
return (-1);
|
||||||
}
|
|
||||||
|
|
||||||
len += kMatchMinLen;
|
len += kMatchMinLen;
|
||||||
nowPos += len;
|
nowPos += len;
|
||||||
|
|
|
@ -22,7 +22,7 @@ public:
|
||||||
Range <<= 8;
|
Range <<= 8;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Init(CLZMAStateP state)
|
void Init(CLZMAStateP state)
|
||||||
{
|
{
|
||||||
Stream.Init(state);
|
Stream.Init(state);
|
||||||
|
@ -40,18 +40,18 @@ public:
|
||||||
for (int i = numTotalBits; i > 0; i--)
|
for (int i = numTotalBits; i > 0; i--)
|
||||||
{
|
{
|
||||||
range >>= 1;
|
range >>= 1;
|
||||||
/*
|
|
||||||
result <<= 1;
|
result <<= 1;
|
||||||
if (code >= range)
|
if (code >= range)
|
||||||
{
|
{
|
||||||
code -= range;
|
code -= range;
|
||||||
result |= 1;
|
result |= 1;
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
UINT32 t = (code - range) >> 31;
|
/*UINT32 t = (code - range) >> 31;
|
||||||
code -= range & (t - 1);
|
code -= range & (t - 1);
|
||||||
// range = aRangeTmp + ((range & 1) & (1 - t));
|
// range = aRangeTmp + ((range & 1) & (1 - t));
|
||||||
result = (result + result) | (1 - t);
|
result = (result + result) | (1 - t);*/
|
||||||
|
|
||||||
if (range < kTopValue)
|
if (range < kTopValue)
|
||||||
{
|
{
|
||||||
|
|
|
@ -36,6 +36,8 @@
|
||||||
}} \
|
}} \
|
||||||
RC_NORMALIZE
|
RC_NORMALIZE
|
||||||
|
|
||||||
|
//modelIndex <<= 1; if (code >= newBound) modelIndex++;
|
||||||
|
|
||||||
#define RC_GETBIT(prob, modelIndex) RC_GETBIT2(prob, modelIndex, ; , ;)
|
#define RC_GETBIT(prob, modelIndex) RC_GETBIT2(prob, modelIndex, ; , ;)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -95,12 +95,10 @@ DWORD WINAPI lzmaDecompressThread(LPVOID lpParameter)
|
||||||
lzmaDecodeder->Create((LPBYTE) lzmaState->DynamicData,
|
lzmaDecodeder->Create((LPBYTE) lzmaState->DynamicData,
|
||||||
numLiteralContextBits, numLiteralPosStateBits, numPosStateBits);
|
numLiteralContextBits, numLiteralPosStateBits, numPosStateBits);
|
||||||
|
|
||||||
UINT32 dictionarySize = 0;
|
UINT32 dictionarySize = *(UINT32 *)(properties + 1);
|
||||||
for (int i = 0; i < 4; i++)
|
if (dictionarySize != lzmaState->DictionarySize)
|
||||||
dictionarySize += ((UINT32)properties[1 + i]) << (i * 8);
|
|
||||||
if (lzmaState->Dictionary == 0 || dictionarySize != lzmaState->DictionarySize)
|
|
||||||
{
|
{
|
||||||
if (lzmaState->Dictionary != 0)
|
if (lzmaState->Dictionary)
|
||||||
LZMAFree(lzmaState->Dictionary);
|
LZMAFree(lzmaState->Dictionary);
|
||||||
lzmaState->Dictionary = LZMAAlloc(dictionarySize);
|
lzmaState->Dictionary = LZMAAlloc(dictionarySize);
|
||||||
lzmaState->DictionarySize = dictionarySize;
|
lzmaState->DictionarySize = dictionarySize;
|
||||||
|
|
|
@ -231,7 +231,7 @@ end:
|
||||||
#ifdef NSIS_COMPRESS_WHOLE
|
#ifdef NSIS_COMPRESS_WHOLE
|
||||||
if (dbd_hFile != INVALID_HANDLE_VALUE) CloseHandle(dbd_hFile);
|
if (dbd_hFile != INVALID_HANDLE_VALUE) CloseHandle(dbd_hFile);
|
||||||
#endif
|
#endif
|
||||||
if (m_Err) my_MessageBox(m_Err, MB_OK | MB_ICONSTOP);
|
if (m_Err) my_MessageBox(m_Err, MB_OK | MB_ICONSTOP | (IDOK << 20));
|
||||||
|
|
||||||
#ifdef NSIS_CONFIG_PLUGIN_SUPPORT
|
#ifdef NSIS_CONFIG_PLUGIN_SUPPORT
|
||||||
// Clean up after plug-ins
|
// Clean up after plug-ins
|
||||||
|
|
|
@ -124,8 +124,8 @@ static int NSISCALL ExecuteEntry(entry *entry_)
|
||||||
|
|
||||||
char *var0;
|
char *var0;
|
||||||
char *var1;
|
char *var1;
|
||||||
char *var2;
|
//char *var2;
|
||||||
char *var3;
|
//char *var3;
|
||||||
//char *var4;
|
//char *var4;
|
||||||
//char *var5;
|
//char *var5;
|
||||||
|
|
||||||
|
@ -152,9 +152,9 @@ static int NSISCALL ExecuteEntry(entry *entry_)
|
||||||
|
|
||||||
var0 = g_usrvars[parm0];
|
var0 = g_usrvars[parm0];
|
||||||
var1 = g_usrvars[parm1];
|
var1 = g_usrvars[parm1];
|
||||||
var2 = g_usrvars[parm2];
|
|
||||||
var3 = g_usrvars[parm3];
|
|
||||||
// not used yet
|
// not used yet
|
||||||
|
//var2 = g_usrvars[parm2];
|
||||||
|
//var3 = g_usrvars[parm3];
|
||||||
//var4 = g_usrvars[parm4];
|
//var4 = g_usrvars[parm4];
|
||||||
//var5 = g_usrvars[parm5];
|
//var5 = g_usrvars[parm5];
|
||||||
|
|
||||||
|
@ -227,7 +227,8 @@ static int NSISCALL ExecuteEntry(entry *entry_)
|
||||||
if (insthwnd) ShowWindow(insthwnd,parm0);
|
if (insthwnd) ShowWindow(insthwnd,parm0);
|
||||||
break;
|
break;
|
||||||
#endif//NSIS_CONFIG_VISIBLE_SUPPORT
|
#endif//NSIS_CONFIG_VISIBLE_SUPPORT
|
||||||
case EW_SETFILEATTRIBUTES: {
|
case EW_SETFILEATTRIBUTES:
|
||||||
|
{
|
||||||
char *buf1=GetStringFromParm(-0x10);
|
char *buf1=GetStringFromParm(-0x10);
|
||||||
log_printf3("SetFileAttributes: \"%s\":%08X",buf1,parm1);
|
log_printf3("SetFileAttributes: \"%s\":%08X",buf1,parm1);
|
||||||
if (!SetFileAttributes(buf1,parm1))
|
if (!SetFileAttributes(buf1,parm1))
|
||||||
|
@ -323,8 +324,8 @@ static int NSISCALL ExecuteEntry(entry *entry_)
|
||||||
case EW_GETFULLPATHNAME:
|
case EW_GETFULLPATHNAME:
|
||||||
{
|
{
|
||||||
char *fp;
|
char *fp;
|
||||||
char *p=var0;
|
char *p=var1;
|
||||||
char *buf0=GetStringFromParm(0x01);
|
char *buf0=GetStringFromParm(0x00);
|
||||||
if (!GetFullPathName(buf0,NSIS_MAX_STRLEN,p,&fp))
|
if (!GetFullPathName(buf0,NSIS_MAX_STRLEN,p,&fp))
|
||||||
{
|
{
|
||||||
exec_error++;
|
exec_error++;
|
||||||
|
@ -459,7 +460,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
|
||||||
GetNSISString(buf0,LANG_ERRORDECOMPRESSING);
|
GetNSISString(buf0,LANG_ERRORDECOMPRESSING);
|
||||||
}
|
}
|
||||||
log_printf2("%s",buf0);
|
log_printf2("%s",buf0);
|
||||||
my_MessageBox(buf0,MB_OK|MB_ICONSTOP);
|
my_MessageBox(buf0,MB_OK|MB_ICONSTOP|(IDOK<<20));
|
||||||
return EXEC_ERROR;
|
return EXEC_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -670,7 +671,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
|
||||||
if (!s)
|
if (!s)
|
||||||
{
|
{
|
||||||
log_printf2("Exch: stack < %d elements",parm2);
|
log_printf2("Exch: stack < %d elements",parm2);
|
||||||
my_MessageBox(GetNSISStringTT(LANG_INSTCORRUPTED),MB_OK|MB_ICONSTOP);
|
my_MessageBox(GetNSISStringTT(LANG_INSTCORRUPTED),MB_OK|MB_ICONSTOP|(IDOK<<20));
|
||||||
return EXEC_ERROR;
|
return EXEC_ERROR;
|
||||||
}
|
}
|
||||||
mystrcpy(buf0,s->text);
|
mystrcpy(buf0,s->text);
|
||||||
|
@ -838,7 +839,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
|
||||||
if (hProc)
|
if (hProc)
|
||||||
{
|
{
|
||||||
log_printf2("Exec: success (\"%s\")",buf0);
|
log_printf2("Exec: success (\"%s\")",buf0);
|
||||||
if (parm1)
|
if (parm2)
|
||||||
{
|
{
|
||||||
DWORD lExitCode;
|
DWORD lExitCode;
|
||||||
while (WaitForSingleObject(hProc,100) == WAIT_TIMEOUT)
|
while (WaitForSingleObject(hProc,100) == WAIT_TIMEOUT)
|
||||||
|
@ -849,7 +850,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
|
||||||
}
|
}
|
||||||
GetExitCodeProcess(hProc, &lExitCode);
|
GetExitCodeProcess(hProc, &lExitCode);
|
||||||
|
|
||||||
if (parm2>=0) myitoa(var2,lExitCode);
|
if (parm1>=0) myitoa(var1,lExitCode);
|
||||||
else if (lExitCode) exec_error++;
|
else if (lExitCode) exec_error++;
|
||||||
}
|
}
|
||||||
CloseHandle( hProc );
|
CloseHandle( hProc );
|
||||||
|
@ -869,9 +870,9 @@ static int NSISCALL ExecuteEntry(entry *entry_)
|
||||||
// also allows GetFileTime to be passed a wildcard.
|
// also allows GetFileTime to be passed a wildcard.
|
||||||
{
|
{
|
||||||
WIN32_FIND_DATA *ffd;
|
WIN32_FIND_DATA *ffd;
|
||||||
char *highout=var1;
|
char *highout=var0;
|
||||||
char *lowout=var2;
|
char *lowout=var1;
|
||||||
char *buf0=GetStringFromParm(0x00);
|
char *buf0=GetStringFromParm(0x02);
|
||||||
|
|
||||||
ffd=file_exists(buf0);
|
ffd=file_exists(buf0);
|
||||||
if (ffd)
|
if (ffd)
|
||||||
|
@ -890,13 +891,13 @@ static int NSISCALL ExecuteEntry(entry *entry_)
|
||||||
#ifdef NSIS_SUPPORT_GETDLLVERSION
|
#ifdef NSIS_SUPPORT_GETDLLVERSION
|
||||||
case EW_GETDLLVERSION:
|
case EW_GETDLLVERSION:
|
||||||
{
|
{
|
||||||
char *highout=var1;
|
char *highout=var0;
|
||||||
char *lowout=var2;
|
char *lowout=var1;
|
||||||
DWORD s1;
|
DWORD s1;
|
||||||
DWORD t[4]; // our two members are the 3rd and 4th..
|
DWORD t[4]; // our two members are the 3rd and 4th..
|
||||||
VS_FIXEDFILEINFO *pvsf1=(VS_FIXEDFILEINFO*)t;
|
VS_FIXEDFILEINFO *pvsf1=(VS_FIXEDFILEINFO*)t;
|
||||||
DWORD d;
|
DWORD d;
|
||||||
char *buf1=GetStringFromParm(-0x10);
|
char *buf1=GetStringFromParm(-0x12);
|
||||||
s1=GetFileVersionInfoSize(buf1,&d);
|
s1=GetFileVersionInfoSize(buf1,&d);
|
||||||
*lowout=*highout=0;
|
*lowout=*highout=0;
|
||||||
exec_error++;
|
exec_error++;
|
||||||
|
@ -1077,7 +1078,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
|
||||||
case EW_REBOOT:
|
case EW_REBOOT:
|
||||||
if (parm0!=0xbadf00d)
|
if (parm0!=0xbadf00d)
|
||||||
{
|
{
|
||||||
my_MessageBox(GetNSISStringTT(LANG_INSTCORRUPTED),MB_OK|MB_ICONSTOP);
|
my_MessageBox(GetNSISStringTT(LANG_INSTCORRUPTED),MB_OK|MB_ICONSTOP|(IDOK<<20));
|
||||||
return EXEC_ERROR;
|
return EXEC_ERROR;
|
||||||
}
|
}
|
||||||
g_exec_flags.exec_error++;
|
g_exec_flags.exec_error++;
|
||||||
|
@ -1282,8 +1283,8 @@ static int NSISCALL ExecuteEntry(entry *entry_)
|
||||||
case EW_FOPEN:
|
case EW_FOPEN:
|
||||||
{
|
{
|
||||||
HANDLE h;
|
HANDLE h;
|
||||||
char *handleout=var3;
|
char *handleout=var0;
|
||||||
char *buf1=GetStringFromParm(-0x10);
|
char *buf1=GetStringFromParm(-0x13);
|
||||||
h=myOpenFile(buf1,parm1,parm2);
|
h=myOpenFile(buf1,parm1,parm2);
|
||||||
if (h == INVALID_HANDLE_VALUE)
|
if (h == INVALID_HANDLE_VALUE)
|
||||||
{
|
{
|
||||||
|
@ -1359,11 +1360,11 @@ static int NSISCALL ExecuteEntry(entry *entry_)
|
||||||
char *t=var0;
|
char *t=var0;
|
||||||
if (*t)
|
if (*t)
|
||||||
{
|
{
|
||||||
DWORD v=SetFilePointer((HANDLE)myatoi(t),GetIntFromParm(1),NULL,parm2);
|
DWORD v=SetFilePointer((HANDLE)myatoi(t),GetIntFromParm(2),NULL,parm3);
|
||||||
|
|
||||||
if (parm3>=0)
|
if (parm1>=0)
|
||||||
{
|
{
|
||||||
myitoa(var3,v);
|
myitoa(var1,v);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1395,11 +1396,11 @@ static int NSISCALL ExecuteEntry(entry *entry_)
|
||||||
break;
|
break;
|
||||||
case EW_FINDFIRST:
|
case EW_FINDFIRST:
|
||||||
{
|
{
|
||||||
char *textout=var1;
|
char *textout=var0;
|
||||||
char *handleout=var2;
|
char *handleout=var1;
|
||||||
HANDLE h;
|
HANDLE h;
|
||||||
WIN32_FIND_DATA fd;
|
WIN32_FIND_DATA fd;
|
||||||
char *buf0=GetStringFromParm(0x00);
|
char *buf0=GetStringFromParm(0x02);
|
||||||
h=FindFirstFile(buf0,&fd);
|
h=FindFirstFile(buf0,&fd);
|
||||||
if (h == INVALID_HANDLE_VALUE)
|
if (h == INVALID_HANDLE_VALUE)
|
||||||
{
|
{
|
||||||
|
@ -1505,35 +1506,35 @@ static int NSISCALL ExecuteEntry(entry *entry_)
|
||||||
if ((unsigned int)x < (unsigned int)num_sections)
|
if ((unsigned int)x < (unsigned int)num_sections)
|
||||||
{
|
{
|
||||||
section *sec=g_sections+x;
|
section *sec=g_sections+x;
|
||||||
if (parm1>=0) // get something
|
if (parm2>=0) // get something
|
||||||
{
|
{
|
||||||
int res=((int*)sec)[parm1];
|
int res=((int*)sec)[parm2];
|
||||||
if (!parm1)
|
if (!parm2)
|
||||||
{
|
{
|
||||||
// getting text
|
// getting text
|
||||||
GetNSISString(var2,res);
|
GetNSISString(var1,res);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// getting number
|
// getting number
|
||||||
myitoa(var2,res);
|
myitoa(var1,res);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // set something
|
else // set something
|
||||||
{
|
{
|
||||||
parm1=-parm1-1;
|
parm2=-parm2-1;
|
||||||
if (parm1)
|
if (parm2)
|
||||||
{
|
{
|
||||||
// not setting text, get int
|
// not setting text, get int
|
||||||
parm2=GetIntFromParm(2);
|
parm1=GetIntFromParm(1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// setting text, send the message to do it
|
// setting text, send the message to do it
|
||||||
SendMessage(hwSectionHack,WM_NOTIFY_SECTEXT,x,parm2);
|
SendMessage(hwSectionHack,WM_NOTIFY_SECTEXT,x,parm1);
|
||||||
}
|
}
|
||||||
((int*)sec)[parm1]=parm2;
|
((int*)sec)[parm2]=parm1;
|
||||||
if (parm1)
|
if (parm2)
|
||||||
{
|
{
|
||||||
// update tree view
|
// update tree view
|
||||||
SendMessage(hwSectionHack,WM_NOTIFY_SECFLAGS,x,0);
|
SendMessage(hwSectionHack,WM_NOTIFY_SECFLAGS,x,0);
|
||||||
|
|
|
@ -482,21 +482,6 @@ extern int g_is_uninstaller;
|
||||||
#define g_sections ((section*)g_blocks[NB_SECTIONS].offset)
|
#define g_sections ((section*)g_blocks[NB_SECTIONS].offset)
|
||||||
#define num_sections (g_blocks[NB_SECTIONS].num)
|
#define num_sections (g_blocks[NB_SECTIONS].num)
|
||||||
#define g_entries ((entry*)g_blocks[NB_ENTRIES].offset)
|
#define g_entries ((entry*)g_blocks[NB_ENTRIES].offset)
|
||||||
/*extern int num_sections;
|
|
||||||
|
|
||||||
//extern int g_autoclose;
|
|
||||||
extern void *g_inst_combinedheader;
|
|
||||||
extern page *g_inst_page;
|
|
||||||
extern section *g_inst_section;
|
|
||||||
extern entry *g_inst_entry;
|
|
||||||
|
|
||||||
#define g_inst_header ((header *)g_inst_combinedheader)
|
|
||||||
#define g_inst_cmnheader ((common_header *)g_inst_combinedheader)
|
|
||||||
|
|
||||||
#ifdef NSIS_CONFIG_UNINSTALL_SUPPORT
|
|
||||||
#define g_inst_uninstheader ((uninstall_header *)g_inst_combinedheader)
|
|
||||||
extern int g_is_uninstaller;
|
|
||||||
#endif*/
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif //_FILEFORM_H_
|
#endif //_FILEFORM_H_
|
||||||
|
|
|
@ -3148,14 +3148,14 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
|
||||||
#ifdef NSIS_SUPPORT_EXECUTE
|
#ifdef NSIS_SUPPORT_EXECUTE
|
||||||
ent.which=EW_EXECUTE;
|
ent.which=EW_EXECUTE;
|
||||||
ent.offsets[0]=add_string(line.gettoken_str(1));
|
ent.offsets[0]=add_string(line.gettoken_str(1));
|
||||||
ent.offsets[1] = 0;
|
ent.offsets[2]=0;
|
||||||
if (which_token == TOK_EXECWAIT)
|
if (which_token == TOK_EXECWAIT)
|
||||||
{
|
{
|
||||||
ent.offsets[1]=1;
|
ent.offsets[2]=1;
|
||||||
ent.offsets[2]=GetUserVarIndex(line, 2);
|
ent.offsets[1]=GetUserVarIndex(line, 2);
|
||||||
if (line.gettoken_str(2)[0] && ent.offsets[2]<0) PRINTHELP()
|
if (line.gettoken_str(2)[0] && ent.offsets[1]<0) PRINTHELP()
|
||||||
}
|
}
|
||||||
SCRIPT_MSG("%s: \"%s\" (->%s)\n",ent.offsets[1]?"ExecWait":"Exec",line.gettoken_str(1),line.gettoken_str(2));
|
SCRIPT_MSG("%s: \"%s\" (->%s)\n",ent.offsets[2]?"ExecWait":"Exec",line.gettoken_str(1),line.gettoken_str(2));
|
||||||
|
|
||||||
DefineInnerLangString(NLF_EXEC);
|
DefineInnerLangString(NLF_EXEC);
|
||||||
return add_entry(&ent);
|
return add_entry(&ent);
|
||||||
|
@ -4274,8 +4274,8 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
|
||||||
ent.which=EW_GETFULLPATHNAME;
|
ent.which=EW_GETFULLPATHNAME;
|
||||||
if (line.getnumtokens()==4 && !stricmp(line.gettoken_str(1),"/SHORT")) a++;
|
if (line.getnumtokens()==4 && !stricmp(line.gettoken_str(1),"/SHORT")) a++;
|
||||||
else if (line.getnumtokens()==4 || *line.gettoken_str(1)=='/') PRINTHELP()
|
else if (line.getnumtokens()==4 || *line.gettoken_str(1)=='/') PRINTHELP()
|
||||||
ent.offsets[0]=GetUserVarIndex(line, 1+a);
|
ent.offsets[0]=add_string(line.gettoken_str(2+a));
|
||||||
ent.offsets[1]=add_string(line.gettoken_str(2+a));
|
ent.offsets[1]=GetUserVarIndex(line, 1+a);
|
||||||
ent.offsets[2]=!a;
|
ent.offsets[2]=!a;
|
||||||
if (ent.offsets[0]<0) PRINTHELP()
|
if (ent.offsets[0]<0) PRINTHELP()
|
||||||
SCRIPT_MSG("GetFullPathName: %s->%s (%d)\n",
|
SCRIPT_MSG("GetFullPathName: %s->%s (%d)\n",
|
||||||
|
@ -4299,10 +4299,10 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
|
||||||
case TOK_GETDLLVERSION:
|
case TOK_GETDLLVERSION:
|
||||||
#ifdef NSIS_SUPPORT_GETDLLVERSION
|
#ifdef NSIS_SUPPORT_GETDLLVERSION
|
||||||
ent.which=EW_GETDLLVERSION;
|
ent.which=EW_GETDLLVERSION;
|
||||||
ent.offsets[0]=add_string(line.gettoken_str(1));
|
ent.offsets[0]=GetUserVarIndex(line, 2);
|
||||||
ent.offsets[1]=GetUserVarIndex(line, 2);
|
ent.offsets[1]=GetUserVarIndex(line, 3);
|
||||||
ent.offsets[2]=GetUserVarIndex(line, 3);
|
ent.offsets[2]=add_string(line.gettoken_str(1));
|
||||||
if (ent.offsets[1]<0 || ent.offsets[2]<0) PRINTHELP()
|
if (ent.offsets[0]<0 || ent.offsets[1]<0) PRINTHELP()
|
||||||
SCRIPT_MSG("GetDLLVersion: %s->%s,%s\n",
|
SCRIPT_MSG("GetDLLVersion: %s->%s,%s\n",
|
||||||
line.gettoken_str(1),line.gettoken_str(2),line.gettoken_str(3));
|
line.gettoken_str(1),line.gettoken_str(2),line.gettoken_str(3));
|
||||||
return add_entry(&ent);
|
return add_entry(&ent);
|
||||||
|
@ -4313,10 +4313,10 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
|
||||||
case TOK_GETFILETIME:
|
case TOK_GETFILETIME:
|
||||||
#ifdef NSIS_SUPPORT_GETFILETIME
|
#ifdef NSIS_SUPPORT_GETFILETIME
|
||||||
ent.which=EW_GETFILETIME;
|
ent.which=EW_GETFILETIME;
|
||||||
ent.offsets[0]=add_string(line.gettoken_str(1));
|
ent.offsets[0]=GetUserVarIndex(line, 2);
|
||||||
ent.offsets[1]=GetUserVarIndex(line, 2);
|
ent.offsets[1]=GetUserVarIndex(line, 3);
|
||||||
ent.offsets[2]=GetUserVarIndex(line, 3);
|
ent.offsets[2]=add_string(line.gettoken_str(1));
|
||||||
if (ent.offsets[1]<0 || ent.offsets[2]<0) PRINTHELP()
|
if (ent.offsets[0]<0 || ent.offsets[1]<0) PRINTHELP()
|
||||||
SCRIPT_MSG("GetFileTime: %s->%s,%s\n",
|
SCRIPT_MSG("GetFileTime: %s->%s,%s\n",
|
||||||
line.gettoken_str(1),line.gettoken_str(2),line.gettoken_str(3));
|
line.gettoken_str(1),line.gettoken_str(2),line.gettoken_str(3));
|
||||||
return add_entry(&ent);
|
return add_entry(&ent);
|
||||||
|
@ -4604,10 +4604,10 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
|
||||||
#ifdef NSIS_SUPPORT_FINDFIRST
|
#ifdef NSIS_SUPPORT_FINDFIRST
|
||||||
case TOK_FINDFIRST:
|
case TOK_FINDFIRST:
|
||||||
ent.which=EW_FINDFIRST;
|
ent.which=EW_FINDFIRST;
|
||||||
ent.offsets[0]=add_string(line.gettoken_str(3)); // filespec
|
ent.offsets[0]=GetUserVarIndex(line, 2); // out
|
||||||
ent.offsets[1]=GetUserVarIndex(line, 2); // out
|
ent.offsets[1]=GetUserVarIndex(line, 1); // handleout
|
||||||
ent.offsets[2]=GetUserVarIndex(line, 1); // handleout
|
ent.offsets[2]=add_string(line.gettoken_str(3)); // filespec
|
||||||
if (ent.offsets[1] < 0 || ent.offsets[2] < 0) PRINTHELP()
|
if (ent.offsets[0] < 0 || ent.offsets[1] < 0) PRINTHELP()
|
||||||
SCRIPT_MSG("FindFirst: spec=\"%s\" handle=%s output=%s\n",line.gettoken_str(3),line.gettoken_str(1),line.gettoken_str(2));
|
SCRIPT_MSG("FindFirst: spec=\"%s\" handle=%s output=%s\n",line.gettoken_str(3),line.gettoken_str(1),line.gettoken_str(2));
|
||||||
return add_entry(&ent);
|
return add_entry(&ent);
|
||||||
case TOK_FINDNEXT:
|
case TOK_FINDNEXT:
|
||||||
|
@ -4637,8 +4637,8 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
|
||||||
case TOK_FILEOPEN:
|
case TOK_FILEOPEN:
|
||||||
{
|
{
|
||||||
ent.which=EW_FOPEN;
|
ent.which=EW_FOPEN;
|
||||||
ent.offsets[3]=GetUserVarIndex(line, 1); // file handle
|
ent.offsets[0]=GetUserVarIndex(line, 1); // file handle
|
||||||
ent.offsets[0]=add_string(line.gettoken_str(2));
|
ent.offsets[3]=add_string(line.gettoken_str(2));
|
||||||
ent.offsets[1]=0; //openmode
|
ent.offsets[1]=0; //openmode
|
||||||
if (!stricmp(line.gettoken_str(3),"r"))
|
if (!stricmp(line.gettoken_str(3),"r"))
|
||||||
{
|
{
|
||||||
|
@ -4705,8 +4705,8 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
|
||||||
int mode=line.gettoken_enum(3,"SET\0CUR\0END\0");
|
int mode=line.gettoken_enum(3,"SET\0CUR\0END\0");
|
||||||
ent.which=EW_FSEEK;
|
ent.which=EW_FSEEK;
|
||||||
ent.offsets[0]=GetUserVarIndex(line, 1);
|
ent.offsets[0]=GetUserVarIndex(line, 1);
|
||||||
ent.offsets[1]=add_string(line.gettoken_str(2));
|
ent.offsets[1]=GetUserVarIndex(line, 4);
|
||||||
ent.offsets[3]=GetUserVarIndex(line, 4);
|
ent.offsets[2]=add_string(line.gettoken_str(2));
|
||||||
|
|
||||||
if (mode<0 && !line.gettoken_str(3)[0])
|
if (mode<0 && !line.gettoken_str(3)[0])
|
||||||
{
|
{
|
||||||
|
@ -4715,8 +4715,8 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
|
||||||
}
|
}
|
||||||
else modestr=line.gettoken_str(3);
|
else modestr=line.gettoken_str(3);
|
||||||
|
|
||||||
if (mode<0 || ent.offsets[0] < 0 || (ent.offsets[3]<0 && line.gettoken_str(4)[0])) PRINTHELP()
|
if (mode<0 || ent.offsets[0] < 0 || (ent.offsets[1]<0 && line.gettoken_str(4)[0])) PRINTHELP()
|
||||||
ent.offsets[2]=tab[mode];
|
ent.offsets[3]=tab[mode];
|
||||||
SCRIPT_MSG("FileSeek: fp=%s, ofs=%s, mode=%s, output=%s\n",
|
SCRIPT_MSG("FileSeek: fp=%s, ofs=%s, mode=%s, output=%s\n",
|
||||||
line.gettoken_str(1),
|
line.gettoken_str(1),
|
||||||
line.gettoken_str(2),
|
line.gettoken_str(2),
|
||||||
|
@ -4795,31 +4795,31 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
|
||||||
case TOK_SECTIONSETTEXT:
|
case TOK_SECTIONSETTEXT:
|
||||||
ent.which=EW_SECTIONSET;
|
ent.which=EW_SECTIONSET;
|
||||||
ent.offsets[0]=add_string(line.gettoken_str(1));
|
ent.offsets[0]=add_string(line.gettoken_str(1));
|
||||||
ent.offsets[1]=SECTION_FIELD_SET(name_ptr);
|
ent.offsets[1]=add_string(line.gettoken_str(2));
|
||||||
ent.offsets[2]=add_string(line.gettoken_str(2));
|
ent.offsets[2]=SECTION_FIELD_SET(name_ptr);
|
||||||
SCRIPT_MSG("SectionSetText: %s->%s\n",line.gettoken_str(1),line.gettoken_str(2));
|
SCRIPT_MSG("SectionSetText: %s->%s\n",line.gettoken_str(1),line.gettoken_str(2));
|
||||||
return add_entry(&ent);
|
return add_entry(&ent);
|
||||||
case TOK_SECTIONGETTEXT:
|
case TOK_SECTIONGETTEXT:
|
||||||
ent.which=EW_SECTIONSET;
|
ent.which=EW_SECTIONSET;
|
||||||
ent.offsets[0]=add_string(line.gettoken_str(1));
|
ent.offsets[0]=add_string(line.gettoken_str(1));
|
||||||
ent.offsets[1]=SECTION_FIELD_GET(name_ptr);
|
ent.offsets[1]=GetUserVarIndex(line, 2);
|
||||||
ent.offsets[2]=GetUserVarIndex(line, 2);
|
ent.offsets[2]=SECTION_FIELD_GET(name_ptr);
|
||||||
if (line.gettoken_str(2)[0] && ent.offsets[2]<0) PRINTHELP()
|
if (line.gettoken_str(2)[0] && ent.offsets[1]<0) PRINTHELP()
|
||||||
SCRIPT_MSG("SectionGetText: %s->%s\n",line.gettoken_str(1),line.gettoken_str(2));
|
SCRIPT_MSG("SectionGetText: %s->%s\n",line.gettoken_str(1),line.gettoken_str(2));
|
||||||
return add_entry(&ent);
|
return add_entry(&ent);
|
||||||
case TOK_SECTIONSETFLAGS:
|
case TOK_SECTIONSETFLAGS:
|
||||||
ent.which=EW_SECTIONSET;
|
ent.which=EW_SECTIONSET;
|
||||||
ent.offsets[0]=add_string(line.gettoken_str(1));
|
ent.offsets[0]=add_string(line.gettoken_str(1));
|
||||||
ent.offsets[1]=SECTION_FIELD_SET(flags);
|
ent.offsets[1]=add_string(line.gettoken_str(2));
|
||||||
ent.offsets[2]=add_string(line.gettoken_str(2));
|
ent.offsets[2]=SECTION_FIELD_SET(flags);
|
||||||
SCRIPT_MSG("SectionSetFlags: %s->%s\n",line.gettoken_str(1),line.gettoken_str(2));
|
SCRIPT_MSG("SectionSetFlags: %s->%s\n",line.gettoken_str(1),line.gettoken_str(2));
|
||||||
return add_entry(&ent);
|
return add_entry(&ent);
|
||||||
case TOK_SECTIONGETFLAGS:
|
case TOK_SECTIONGETFLAGS:
|
||||||
ent.which=EW_SECTIONSET;
|
ent.which=EW_SECTIONSET;
|
||||||
ent.offsets[0]=add_string(line.gettoken_str(1));
|
ent.offsets[0]=add_string(line.gettoken_str(1));
|
||||||
ent.offsets[1]=SECTION_FIELD_GET(flags);
|
ent.offsets[1]=GetUserVarIndex(line, 2);
|
||||||
ent.offsets[2]=GetUserVarIndex(line, 2);
|
ent.offsets[2]=SECTION_FIELD_GET(flags);
|
||||||
if (line.gettoken_str(2)[0] && ent.offsets[2]<0) PRINTHELP()
|
if (line.gettoken_str(2)[0] && ent.offsets[1]<0) PRINTHELP()
|
||||||
SCRIPT_MSG("SectionGetFlags: %s->%s\n",line.gettoken_str(1),line.gettoken_str(2));
|
SCRIPT_MSG("SectionGetFlags: %s->%s\n",line.gettoken_str(1),line.gettoken_str(2));
|
||||||
return add_entry(&ent);
|
return add_entry(&ent);
|
||||||
case TOK_INSTTYPESETTEXT:
|
case TOK_INSTTYPESETTEXT:
|
||||||
|
@ -4840,31 +4840,31 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
|
||||||
case TOK_SECTIONSETINSTTYPES:
|
case TOK_SECTIONSETINSTTYPES:
|
||||||
ent.which=EW_SECTIONSET;
|
ent.which=EW_SECTIONSET;
|
||||||
ent.offsets[0]=add_string(line.gettoken_str(1));
|
ent.offsets[0]=add_string(line.gettoken_str(1));
|
||||||
ent.offsets[1]=SECTION_FIELD_SET(install_types);
|
ent.offsets[1]=add_string(line.gettoken_str(2));
|
||||||
ent.offsets[2]=add_string(line.gettoken_str(2));
|
ent.offsets[2]=SECTION_FIELD_SET(install_types);
|
||||||
SCRIPT_MSG("SectionSetInstTypes: %s->%s\n",line.gettoken_str(1),line.gettoken_str(2));
|
SCRIPT_MSG("SectionSetInstTypes: %s->%s\n",line.gettoken_str(1),line.gettoken_str(2));
|
||||||
return add_entry(&ent);
|
return add_entry(&ent);
|
||||||
case TOK_SECTIONGETINSTTYPES:
|
case TOK_SECTIONGETINSTTYPES:
|
||||||
ent.which=EW_SECTIONSET;
|
ent.which=EW_SECTIONSET;
|
||||||
ent.offsets[0]=add_string(line.gettoken_str(1));
|
ent.offsets[0]=add_string(line.gettoken_str(1));
|
||||||
ent.offsets[1]=SECTION_FIELD_GET(install_types);
|
ent.offsets[1]=GetUserVarIndex(line, 2);
|
||||||
ent.offsets[2]=GetUserVarIndex(line, 2);
|
ent.offsets[2]=SECTION_FIELD_GET(install_types);
|
||||||
if (line.gettoken_str(2)[0] && ent.offsets[2]<0) PRINTHELP()
|
if (line.gettoken_str(2)[0] && ent.offsets[1]<0) PRINTHELP()
|
||||||
SCRIPT_MSG("SectionGetInstTypes: %s->%s\n",line.gettoken_str(1),line.gettoken_str(2));
|
SCRIPT_MSG("SectionGetInstTypes: %s->%s\n",line.gettoken_str(1),line.gettoken_str(2));
|
||||||
return add_entry(&ent);
|
return add_entry(&ent);
|
||||||
case TOK_SECTIONSETSIZE:
|
case TOK_SECTIONSETSIZE:
|
||||||
ent.which=EW_SECTIONSET;
|
ent.which=EW_SECTIONSET;
|
||||||
ent.offsets[0]=add_string(line.gettoken_str(1));
|
ent.offsets[0]=add_string(line.gettoken_str(1));
|
||||||
ent.offsets[1]=SECTION_FIELD_SET(size_kb);
|
ent.offsets[1]=add_string(line.gettoken_str(2));
|
||||||
ent.offsets[2]=add_string(line.gettoken_str(2));
|
ent.offsets[2]=SECTION_FIELD_SET(size_kb);
|
||||||
SCRIPT_MSG("SectionSetSize: %s->%s\n",line.gettoken_str(1),line.gettoken_str(2));
|
SCRIPT_MSG("SectionSetSize: %s->%s\n",line.gettoken_str(1),line.gettoken_str(2));
|
||||||
return add_entry(&ent);
|
return add_entry(&ent);
|
||||||
case TOK_SECTIONGETSIZE:
|
case TOK_SECTIONGETSIZE:
|
||||||
ent.which=EW_SECTIONSET;
|
ent.which=EW_SECTIONSET;
|
||||||
ent.offsets[0]=add_string(line.gettoken_str(1));
|
ent.offsets[0]=add_string(line.gettoken_str(1));
|
||||||
ent.offsets[1]=SECTION_FIELD_GET(size_kb);
|
ent.offsets[1]=GetUserVarIndex(line, 2);
|
||||||
ent.offsets[2]=GetUserVarIndex(line, 2);
|
ent.offsets[2]=SECTION_FIELD_GET(size_kb);
|
||||||
if (line.gettoken_str(2)[0] && ent.offsets[2]<0) PRINTHELP()
|
if (line.gettoken_str(2)[0] && ent.offsets[1]<0) PRINTHELP()
|
||||||
SCRIPT_MSG("SectionGetSize: %s->%s\n",line.gettoken_str(1),line.gettoken_str(2));
|
SCRIPT_MSG("SectionGetSize: %s->%s\n",line.gettoken_str(1),line.gettoken_str(2));
|
||||||
return add_entry(&ent);
|
return add_entry(&ent);
|
||||||
case TOK_SETCURINSTTYPE:
|
case TOK_SETCURINSTTYPE:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue