0.5KB saving
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@765 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
parent
4f1efc6c40
commit
c8e693e95b
3 changed files with 228 additions and 211 deletions
|
@ -127,16 +127,23 @@ int NSISCALL ExecuteCodeSegment(entry *entries, int pos, HWND hwndProgress)
|
|||
static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
||||
{
|
||||
static char buf[NSIS_MAX_STRLEN],buf2[NSIS_MAX_STRLEN],buf3[NSIS_MAX_STRLEN],buf4[NSIS_MAX_STRLEN];
|
||||
// changed by Amir Szekely 28 August 2002
|
||||
// shaves off 0.5KB
|
||||
int *parms=entries[pos].offsets;
|
||||
int parm0=parms[0];
|
||||
int parm1=parms[1];
|
||||
int parm2=parms[2];
|
||||
int parm3=parms[3];
|
||||
int parm4=parms[4];
|
||||
int which=entries[pos].which;
|
||||
switch (which)
|
||||
{
|
||||
case EW_NOP:
|
||||
log_printf2("Jump: %d",parms[0]);
|
||||
return parms[0];
|
||||
log_printf2("Jump: %d",parm0);
|
||||
return parm0;
|
||||
case EW_ABORT:
|
||||
{
|
||||
process_string_fromtab(buf,parms[0]);
|
||||
process_string_fromtab(buf,parm0);
|
||||
log_printf2("Aborting: \"%s\"",buf);
|
||||
update_status_text("",buf);
|
||||
}
|
||||
|
@ -147,29 +154,29 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
return EXEC_ERROR;
|
||||
case EW_CALL:
|
||||
{
|
||||
int v=resolveaddr(parms[0])-1; // address is -1, since we encode it as +1
|
||||
int v=resolveaddr(parm0)-1; // address is -1, since we encode it as +1
|
||||
log_printf2("Call: %d",v);
|
||||
return ExecuteCodeSegment(entries,v,NULL);
|
||||
}
|
||||
case EW_UPDATETEXT:
|
||||
if (parms[1]) ui_st_updateflag=parms[1];
|
||||
if (parm1) ui_st_updateflag=parm1;
|
||||
else
|
||||
{
|
||||
process_string_fromtab(buf4,parms[0]);
|
||||
process_string_fromtab(buf4,parm0);
|
||||
log_printf2("detailprint: %s",buf4);
|
||||
update_status_text(buf4,"");
|
||||
}
|
||||
return 0;
|
||||
case EW_SLEEP:
|
||||
{
|
||||
int x=process_string_fromtab_toint(parms[0]);
|
||||
int x=process_string_fromtab_toint(parm0);
|
||||
if (x < 1) x=1;
|
||||
log_printf2("Sleep(%d)",x);
|
||||
Sleep(x);
|
||||
}
|
||||
return 0;
|
||||
case EW_SETSFCONTEXT:
|
||||
g_all_user_var_flag=parms[0];
|
||||
g_all_user_var_flag=parm0;
|
||||
return 0;
|
||||
case EW_HIDEWINDOW:
|
||||
log_printf("HideWindow");
|
||||
|
@ -181,25 +188,25 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
SetForegroundWindow(g_hwnd);
|
||||
return 0;
|
||||
case EW_SETWINDOWCLOSE:
|
||||
g_autoclose=parms[0];
|
||||
g_autoclose=parm0;
|
||||
return 0;
|
||||
case EW_CHDETAILSVIEW:
|
||||
if (insthwndbutton) ShowWindow(insthwndbutton,parms[1]);
|
||||
if (insthwnd) ShowWindow(insthwnd,parms[0]);
|
||||
if (insthwndbutton) ShowWindow(insthwndbutton,parm1);
|
||||
if (insthwnd) ShowWindow(insthwnd,parm0);
|
||||
return 0;
|
||||
case EW_SETFILEATTRIBUTES:
|
||||
process_string_fromtab(buf,parms[0]);
|
||||
log_printf3("SetFileAttributes: \"%s\":%08X",buf,parms[1]);
|
||||
if (!SetFileAttributes(buf,parms[1]))
|
||||
process_string_fromtab(buf,parm0);
|
||||
log_printf3("SetFileAttributes: \"%s\":%08X",buf,parm1);
|
||||
if (!SetFileAttributes(buf,parm1))
|
||||
{
|
||||
exec_errorflag++;
|
||||
log_printf("SetFileAttributes failed.");
|
||||
}
|
||||
return 0;
|
||||
case EW_CREATEDIR:
|
||||
process_string_fromtab(buf2,parms[0]);
|
||||
log_printf3("CreateDirectory: \"%s\" (%d)",buf2,parms[1]);
|
||||
if (parms[1])
|
||||
process_string_fromtab(buf2,parm0);
|
||||
log_printf3("CreateDirectory: \"%s\" (%d)",buf2,parm1);
|
||||
if (parm1)
|
||||
{
|
||||
update_status_text_from_lang(LANGID_OUTPUTDIR,buf2);
|
||||
mystrcpy(state_output_directory,buf2);
|
||||
|
@ -208,29 +215,29 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
recursive_create_directory(buf2);
|
||||
return 0;
|
||||
case EW_IFFILEEXISTS:
|
||||
process_string_fromtab(buf,parms[0]);
|
||||
process_string_fromtab(buf,parm0);
|
||||
if (file_exists(buf))
|
||||
{
|
||||
log_printf3("IfFileExists: file \"%s\" exists, jumping %d",buf,parms[1]);
|
||||
return parms[1];
|
||||
log_printf3("IfFileExists: file \"%s\" exists, jumping %d",buf,parm1);
|
||||
return parm1;
|
||||
}
|
||||
log_printf3("IfFileExists: file \"%s\" does not exist, jumping %d",buf,parms[2]);
|
||||
return parms[2];
|
||||
log_printf3("IfFileExists: file \"%s\" does not exist, jumping %d",buf,parm2);
|
||||
return parm2;
|
||||
case EW_IFERRORS:
|
||||
{
|
||||
int f=exec_errorflag;
|
||||
exec_errorflag=parms[2];
|
||||
exec_errorflag=parm2;
|
||||
if (f)
|
||||
{
|
||||
return parms[0];
|
||||
return parm0;
|
||||
}
|
||||
}
|
||||
return parms[1];
|
||||
return parm1;
|
||||
#ifdef NSIS_SUPPORT_RENAME
|
||||
case EW_RENAME:
|
||||
{
|
||||
process_string_fromtab(buf,parms[0]);
|
||||
process_string_fromtab(buf2,parms[1]);
|
||||
process_string_fromtab(buf,parm0);
|
||||
process_string_fromtab(buf2,parm1);
|
||||
mystrcpy(buf4,buf);
|
||||
if (mystrlen(buf)+mystrlen(buf2) < NSIS_MAX_STRLEN-3)
|
||||
{
|
||||
|
@ -245,7 +252,7 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
else
|
||||
{
|
||||
#ifdef NSIS_SUPPORT_MOVEONREBOOT
|
||||
if (parms[2] && file_exists(buf))
|
||||
if (parm2 && file_exists(buf))
|
||||
{
|
||||
#ifdef NSIS_SUPPORT_REBOOT
|
||||
exec_rebootflag++;
|
||||
|
@ -267,9 +274,9 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
#ifdef NSIS_SUPPORT_FNUTIL
|
||||
case EW_GETFULLPATHNAME:
|
||||
{
|
||||
char *p=g_usrvars[parms[0]];
|
||||
char *p=g_usrvars[parm0];
|
||||
char *fp;
|
||||
process_string_fromtab(buf,parms[1]);
|
||||
process_string_fromtab(buf,parm1);
|
||||
if (!GetFullPathName(buf,NSIS_MAX_STRLEN,p,&fp))
|
||||
{
|
||||
exec_errorflag++;
|
||||
|
@ -288,14 +295,14 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
*p=0;
|
||||
}
|
||||
}
|
||||
if (!parms[2]) GetShortPathName(p,p,NSIS_MAX_STRLEN);
|
||||
if (!parm2) GetShortPathName(p,p,NSIS_MAX_STRLEN);
|
||||
}
|
||||
return 0;
|
||||
case EW_SEARCHPATH:
|
||||
{
|
||||
char *fp;
|
||||
char *p=g_usrvars[parms[0]];
|
||||
process_string_fromtab(buf,parms[1]);
|
||||
char *p=g_usrvars[parm0];
|
||||
process_string_fromtab(buf,parm1);
|
||||
if (!SearchPath(NULL,buf,NULL,NSIS_MAX_STRLEN,p,&fp))
|
||||
{
|
||||
p[0]=0;
|
||||
|
@ -305,7 +312,7 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
return 0;
|
||||
case EW_GETTEMPFILENAME:
|
||||
{
|
||||
char *textout=g_usrvars[parms[0]];
|
||||
char *textout=g_usrvars[parm0];
|
||||
if (!GetTempPath(NSIS_MAX_STRLEN,buf) || !GetTempFileName(buf,"nst",0,textout))
|
||||
{
|
||||
*textout=0;
|
||||
|
@ -319,10 +326,10 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
{
|
||||
HANDLE hOut;
|
||||
int ret;
|
||||
int overwriteflag=parms[0];
|
||||
int overwriteflag=parm0;
|
||||
addtrailingslash(mystrcpy(buf,state_output_directory));
|
||||
|
||||
process_string_fromtab(buf4,parms[1]);
|
||||
process_string_fromtab(buf4,parm1);
|
||||
log_printf3("File: overwriteflag=%d, name=\"%s\"",overwriteflag,buf4);
|
||||
if (validpathspec(buf4))
|
||||
{
|
||||
|
@ -379,11 +386,11 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
}
|
||||
|
||||
update_status_text_from_lang(LANGID_EXTRACT,buf4);
|
||||
ret=GetCompressedDataFromDataBlock(parms[2],hOut);
|
||||
ret=GetCompressedDataFromDataBlock(parm2,hOut);
|
||||
|
||||
log_printf3("File: wrote %d to \"%s\"",ret,buf);
|
||||
|
||||
if (parms[3] != 0xffffffff || parms[4] != 0xffffffff)
|
||||
if (parm3 != 0xffffffff || parm4 != 0xffffffff)
|
||||
SetFileTime(hOut,(FILETIME*)(parms+3),NULL,(FILETIME*)(parms+3));
|
||||
|
||||
CloseHandle(hOut);
|
||||
|
@ -410,7 +417,7 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
{
|
||||
HANDLE h;
|
||||
WIN32_FIND_DATA fd;
|
||||
process_string_fromtab(buf2,parms[0]);
|
||||
process_string_fromtab(buf2,parm0);
|
||||
mystrcpy(buf,buf2);
|
||||
log_printf2("Delete: \"%s\"",buf);
|
||||
trimslashtoend(buf);
|
||||
|
@ -432,7 +439,7 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
else
|
||||
{
|
||||
#ifdef NSIS_SUPPORT_MOVEONREBOOT
|
||||
if (parms[1])
|
||||
if (parm1)
|
||||
{
|
||||
#ifdef NSIS_SUPPORT_REBOOT
|
||||
exec_rebootflag++;
|
||||
|
@ -458,18 +465,18 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
case EW_MESSAGEBOX: // MessageBox
|
||||
{
|
||||
int v;
|
||||
process_string_fromtab(buf4,parms[1]);
|
||||
log_printf3("MessageBox: %d,\"%s\"",parms[0],buf4);
|
||||
v=my_MessageBox(buf4,parms[0]);
|
||||
process_string_fromtab(buf4,parm1);
|
||||
log_printf3("MessageBox: %d,\"%s\"",parm0,buf4);
|
||||
v=my_MessageBox(buf4,parm0);
|
||||
if (v)
|
||||
{
|
||||
if (v==(parms[2]&0xffff))
|
||||
if (v==(parm2&0xffff))
|
||||
{
|
||||
return parms[3];
|
||||
return parm3;
|
||||
}
|
||||
if (v==(parms[2]>>16))
|
||||
if (v==(parm2>>16))
|
||||
{
|
||||
return parms[4];
|
||||
return parm4;
|
||||
}
|
||||
}
|
||||
else exec_errorflag++;
|
||||
|
@ -479,30 +486,30 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
#ifdef NSIS_SUPPORT_RMDIR
|
||||
case EW_RMDIR:
|
||||
{
|
||||
process_string_fromtab(buf,parms[0]);
|
||||
process_string_fromtab(buf,parm0);
|
||||
log_printf2("RMDir: \"%s\"",buf);
|
||||
|
||||
if (lastchar(buf)=='\\') trimslashtoend(buf);
|
||||
|
||||
doRMDir(buf,parms[1]);
|
||||
doRMDir(buf,parm1);
|
||||
if (file_exists(buf)) exec_errorflag++;
|
||||
}
|
||||
return 0;
|
||||
#endif//NSIS_SUPPORT_RMDIR
|
||||
#ifdef NSIS_SUPPORT_STROPTS
|
||||
case EW_STRLEN:
|
||||
process_string_fromtab(buf,parms[1]);
|
||||
myitoa(g_usrvars[parms[0]],mystrlen(buf));
|
||||
process_string_fromtab(buf,parm1);
|
||||
myitoa(g_usrvars[parm0],mystrlen(buf));
|
||||
return 0;
|
||||
case EW_ASSIGNVAR:
|
||||
{
|
||||
int newlen=process_string_fromtab_toint(parms[2]);
|
||||
int start=process_string_fromtab_toint(parms[3]);
|
||||
int newlen=process_string_fromtab_toint(parm2);
|
||||
int start=process_string_fromtab_toint(parm3);
|
||||
int l;
|
||||
char *p=g_usrvars[parms[0]];
|
||||
process_string_fromtab(buf,parms[1]);
|
||||
char *p=g_usrvars[parm0];
|
||||
process_string_fromtab(buf,parm1);
|
||||
*p=0;
|
||||
if (parms[2] < 0 || newlen)
|
||||
if (parm2 < 0 || newlen)
|
||||
{
|
||||
l=mystrlen(buf);
|
||||
|
||||
|
@ -522,17 +529,17 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
}
|
||||
return 0;
|
||||
case EW_STRCMP:
|
||||
process_string_fromtab(buf3,parms[0]);
|
||||
process_string_fromtab(buf4,parms[1]);
|
||||
if (!lstrcmpi(buf3,buf4)) return parms[2];
|
||||
return parms[3];
|
||||
process_string_fromtab(buf3,parm0);
|
||||
process_string_fromtab(buf4,parm1);
|
||||
if (!lstrcmpi(buf3,buf4)) return parm2;
|
||||
return parm3;
|
||||
#endif//NSIS_SUPPORT_STROPTS
|
||||
#ifdef NSIS_SUPPORT_ENVIRONMENT
|
||||
case EW_READENVSTR:
|
||||
{
|
||||
char *p=g_usrvars[parms[0]];
|
||||
process_string_fromtab(buf,parms[1]);
|
||||
if (parms[2])
|
||||
char *p=g_usrvars[parm0];
|
||||
process_string_fromtab(buf,parm1);
|
||||
if (parm2)
|
||||
{
|
||||
if (!GetEnvironmentVariable(buf,p,NSIS_MAX_STRLEN))
|
||||
{
|
||||
|
@ -552,28 +559,28 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
case EW_INTCMP:
|
||||
{
|
||||
int v,v2;
|
||||
v=process_string_fromtab_toint(parms[0]);
|
||||
v2=process_string_fromtab_toint(parms[1]);
|
||||
if (v<v2) return parms[3];
|
||||
if (v>v2) return parms[4];
|
||||
v=process_string_fromtab_toint(parm0);
|
||||
v2=process_string_fromtab_toint(parm1);
|
||||
if (v<v2) return parm3;
|
||||
if (v>v2) return parm4;
|
||||
}
|
||||
return parms[2];
|
||||
return parm2;
|
||||
case EW_INTCMPU:
|
||||
{
|
||||
unsigned int v,v2;
|
||||
v=(unsigned int)process_string_fromtab_toint(parms[0]);
|
||||
v2=(unsigned int)process_string_fromtab_toint(parms[1]);
|
||||
if (v<v2) return parms[3];
|
||||
if (v>v2) return parms[4];
|
||||
v=(unsigned int)process_string_fromtab_toint(parm0);
|
||||
v2=(unsigned int)process_string_fromtab_toint(parm1);
|
||||
if (v<v2) return parm3;
|
||||
if (v>v2) return parm4;
|
||||
}
|
||||
return parms[2];
|
||||
return parm2;
|
||||
case EW_INTOP:
|
||||
{
|
||||
int v,v2;
|
||||
char *p=g_usrvars[parms[0]];
|
||||
v=process_string_fromtab_toint(parms[1]);
|
||||
v2=process_string_fromtab_toint(parms[2]);
|
||||
switch (parms[3])
|
||||
char *p=g_usrvars[parm0];
|
||||
v=process_string_fromtab_toint(parm1);
|
||||
v2=process_string_fromtab_toint(parm2);
|
||||
switch (parm3)
|
||||
{
|
||||
case 0: v+=v2; break;
|
||||
case 1: v-=v2; break;
|
||||
|
@ -592,30 +599,30 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
}
|
||||
return 0;
|
||||
case EW_INTFMT:
|
||||
process_string_fromtab(buf,parms[1]);
|
||||
wsprintf(g_usrvars[parms[0]],
|
||||
process_string_fromtab(buf,parm1);
|
||||
wsprintf(g_usrvars[parm0],
|
||||
buf,
|
||||
process_string_fromtab_toint(parms[2]));
|
||||
process_string_fromtab_toint(parm2));
|
||||
return 0;
|
||||
#endif//NSIS_SUPPORT_INTOPTS
|
||||
#ifdef NSIS_SUPPORT_STACK
|
||||
case EW_PUSHPOP:
|
||||
{
|
||||
stack_t *s=g_st;
|
||||
int cnt=parms[2];
|
||||
int cnt=parm2;
|
||||
if (cnt) //Exch contributed by Fritz Elfert
|
||||
{
|
||||
while (cnt--&&s) s=s->next;
|
||||
if (!s)
|
||||
{
|
||||
log_printf2("Exch: stack < %d elements",parms[2]);
|
||||
log_printf2("Exch: stack < %d elements",parm2);
|
||||
break;
|
||||
}
|
||||
mystrcpy(buf,s->text);
|
||||
mystrcpy(s->text,g_st->text);
|
||||
mystrcpy(g_st->text,buf);
|
||||
}
|
||||
else if (parms[1])
|
||||
else if (parm1)
|
||||
{
|
||||
if (!s)
|
||||
{
|
||||
|
@ -623,14 +630,14 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
exec_errorflag++;
|
||||
return 0;
|
||||
}
|
||||
mystrcpy(g_usrvars[parms[0]],s->text);
|
||||
mystrcpy(g_usrvars[parm0],s->text);
|
||||
g_st=s->next;
|
||||
GlobalFree((HGLOBAL)s);
|
||||
}
|
||||
else
|
||||
{
|
||||
s=(stack_t*)GlobalAlloc(GPTR,sizeof(stack_t));
|
||||
process_string_fromtab(s->text,parms[0]);
|
||||
process_string_fromtab(s->text,parm0);
|
||||
s->next=g_st;
|
||||
g_st=s;
|
||||
}
|
||||
|
@ -642,50 +649,50 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
case EW_SENDMESSAGE:
|
||||
{
|
||||
int v;
|
||||
int b3=process_string_fromtab_toint(parms[3]);
|
||||
int b4=process_string_fromtab_toint(parms[4]);
|
||||
int b3=process_string_fromtab_toint(parm3);
|
||||
int b4=process_string_fromtab_toint(parm4);
|
||||
|
||||
process_string_fromtab(buf,parms[1]);
|
||||
process_string_fromtab(buf2,parms[2]);
|
||||
process_string_fromtab(buf,parm1);
|
||||
process_string_fromtab(buf2,parm2);
|
||||
|
||||
if (myatoi(buf2)==WM_SETTEXT) {
|
||||
process_string_fromtab(buf3,parms[4]);
|
||||
process_string_fromtab(buf3,parm4);
|
||||
b4=(int)buf3;
|
||||
}
|
||||
|
||||
if (which == EW_SENDMESSAGE) v=SendMessage((HWND)myatoi(buf),myatoi(buf2),b3,b4);
|
||||
else v=(int)FindWindowEx((HWND)b3,(HWND)b4,buf[0]?buf:NULL,buf2[0]?buf2:NULL);
|
||||
|
||||
if (parms[0]>=0)
|
||||
myitoa(g_usrvars[parms[0]],v);
|
||||
if (parm0>=0)
|
||||
myitoa(g_usrvars[parm0],v);
|
||||
}
|
||||
return 0;
|
||||
case EW_ISWINDOW:
|
||||
if (IsWindow((HWND)process_string_fromtab_toint(parms[0]))) return parms[1];
|
||||
return parms[2];
|
||||
if (IsWindow((HWND)process_string_fromtab_toint(parm0))) return parm1;
|
||||
return parm2;
|
||||
case EW_GETDLGITEM:
|
||||
myitoa(
|
||||
g_usrvars[parms[0]],
|
||||
g_usrvars[parm0],
|
||||
(int)GetDlgItem(
|
||||
(HWND)process_string_fromtab_toint(parms[1]),
|
||||
process_string_fromtab_toint(parms[2])
|
||||
(HWND)process_string_fromtab_toint(parm1),
|
||||
process_string_fromtab_toint(parm2)
|
||||
)
|
||||
);
|
||||
return 0;
|
||||
case EW_SETWINDOWLONG:
|
||||
SetWindowLong((HWND)process_string_fromtab_toint(parms[0]),parms[1],process_string_fromtab_toint(parms[2]));
|
||||
SetWindowLong((HWND)process_string_fromtab_toint(parm0),parm1,process_string_fromtab_toint(parm2));
|
||||
return 0;
|
||||
#endif
|
||||
#ifdef NSIS_SUPPORT_SHELLEXECUTE
|
||||
case EW_SHELLEXEC: // this uses improvements of Andras Varga
|
||||
{
|
||||
int x;
|
||||
process_string_fromtab(buf,parms[0]);
|
||||
process_string_fromtab(buf2,parms[1]);
|
||||
process_string_fromtab(buf3,parms[2]);
|
||||
process_string_fromtab(buf,parm0);
|
||||
process_string_fromtab(buf2,parm1);
|
||||
process_string_fromtab(buf3,parm2);
|
||||
wsprintf(buf4,"%s %s",buf,buf2);
|
||||
update_status_text_from_lang(LANGID_EXECSHELL, buf4);
|
||||
x=(int)ShellExecute(g_hwnd,buf[0]?buf:NULL,buf2,buf3[0]?buf3:NULL,state_output_directory,parms[3]);
|
||||
x=(int)ShellExecute(g_hwnd,buf[0]?buf:NULL,buf2,buf3[0]?buf3:NULL,state_output_directory,parm3);
|
||||
if (x < 33)
|
||||
{
|
||||
log_printf5("ExecShell: warning: error (\"%s\": file:\"%s\" params:\"%s\")=%d",buf,buf2,buf3,x);
|
||||
|
@ -702,7 +709,7 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
case EW_EXECUTE:
|
||||
{
|
||||
HANDLE hProc;
|
||||
process_string_fromtab(buf,parms[0]);
|
||||
process_string_fromtab(buf,parm0);
|
||||
log_printf2("Exec: command=\"%s\"",buf);
|
||||
update_status_text_from_lang(LANGID_EXECUTE,buf);
|
||||
|
||||
|
@ -711,7 +718,7 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
if (hProc)
|
||||
{
|
||||
log_printf2("Exec: success (\"%s\")",buf);
|
||||
if (parms[1])
|
||||
if (parm1)
|
||||
{
|
||||
DWORD lExitCode;
|
||||
while (WaitForSingleObject(hProc,100) == WAIT_TIMEOUT)
|
||||
|
@ -722,7 +729,7 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
}
|
||||
GetExitCodeProcess(hProc, &lExitCode);
|
||||
|
||||
if (parms[2]>=0) myitoa(g_usrvars[parms[2]],lExitCode);
|
||||
if (parm2>=0) myitoa(g_usrvars[parm2],lExitCode);
|
||||
else if (lExitCode) exec_errorflag++;
|
||||
}
|
||||
CloseHandle( hProc );
|
||||
|
@ -742,9 +749,9 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
// also allows GetFileTime to be passed a wildcard.
|
||||
{
|
||||
WIN32_FIND_DATA *ffd;
|
||||
char *highout=g_usrvars[parms[1]];
|
||||
char *lowout=g_usrvars[parms[2]];
|
||||
process_string_fromtab(buf,parms[0]);
|
||||
char *highout=g_usrvars[parm1];
|
||||
char *lowout=g_usrvars[parm2];
|
||||
process_string_fromtab(buf,parm0);
|
||||
|
||||
ffd=file_exists(buf);
|
||||
if (ffd)
|
||||
|
@ -763,13 +770,13 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
#ifdef NSIS_SUPPORT_GETDLLVERSION
|
||||
case EW_GETDLLVERSION:
|
||||
{
|
||||
char *highout=g_usrvars[parms[1]];
|
||||
char *lowout=g_usrvars[parms[2]];
|
||||
char *highout=g_usrvars[parm1];
|
||||
char *lowout=g_usrvars[parm2];
|
||||
DWORD s1;
|
||||
DWORD t[4]; // our two members are the 3rd and 4th..
|
||||
VS_FIXEDFILEINFO *pvsf1=(VS_FIXEDFILEINFO*)t;
|
||||
DWORD d;
|
||||
process_string_fromtab(buf,parms[0]);
|
||||
process_string_fromtab(buf,parm0);
|
||||
s1=GetFileVersionInfoSize(buf,&d);
|
||||
*lowout=*highout=0;
|
||||
exec_errorflag++;
|
||||
|
@ -801,8 +808,8 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
if (hres == S_FALSE || hres == S_OK)
|
||||
{
|
||||
HANDLE h;
|
||||
process_string_fromtab(buf,parms[0]);
|
||||
process_string_fromtab(buf2,parms[1]);
|
||||
process_string_fromtab(buf,parm0);
|
||||
process_string_fromtab(buf2,parm1);
|
||||
|
||||
h=LoadLibrary(buf);
|
||||
if (h)
|
||||
|
@ -811,7 +818,7 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
if (funke)
|
||||
{
|
||||
exec_errorflag--;
|
||||
if (parms[2]<0)
|
||||
if (parm2<0)
|
||||
{
|
||||
void (*func)(HWND,int,char*,void*);
|
||||
func=(void*)funke;
|
||||
|
@ -824,7 +831,7 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
}
|
||||
else
|
||||
{
|
||||
process_string_fromtab(buf3,parms[2]);
|
||||
process_string_fromtab(buf3,parm2);
|
||||
update_status_text(buf3,buf);
|
||||
funke();
|
||||
}
|
||||
|
@ -853,16 +860,16 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
#endif
|
||||
#ifdef NSIS_SUPPORT_CREATESHORTCUT
|
||||
case EW_CREATESHORTCUT:
|
||||
process_string_fromtab(buf3,parms[0]);
|
||||
process_string_fromtab(buf2,parms[1]);
|
||||
process_string_fromtab(buf, parms[2]);
|
||||
process_string_fromtab(buf4,parms[3]);
|
||||
process_string_fromtab(buf3,parm0);
|
||||
process_string_fromtab(buf2,parm1);
|
||||
process_string_fromtab(buf, parm2);
|
||||
process_string_fromtab(buf4,parm3);
|
||||
|
||||
log_printf8("CreateShortCut: out: \"%s\", in: \"%s %s\", icon: %s,%d, sw=%d, hk=%d",
|
||||
buf3,buf2,buf,buf4,parms[4]&0xff,(parms[4]&0xff00)>>8,parms[4]>>16);
|
||||
buf3,buf2,buf,buf4,parm4&0xff,(parm4&0xff00)>>8,parm4>>16);
|
||||
|
||||
if (CreateShortCut(g_hwnd, buf3, buf4[0]?buf4:NULL, parms[4]&0xff, buf2, buf[0]?buf:NULL,
|
||||
state_output_directory,(parms[4]&0xff00)>>8,parms[4]>>16))
|
||||
if (CreateShortCut(g_hwnd, buf3, buf4[0]?buf4:NULL, parm4&0xff, buf2, buf[0]?buf:NULL,
|
||||
state_output_directory,(parm4&0xff00)>>8,parm4>>16))
|
||||
{
|
||||
exec_errorflag++;
|
||||
update_status_text_from_lang(LANGID_ERRORCREATINGSHORTCUT,buf3);
|
||||
|
@ -878,8 +885,8 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
{
|
||||
int res;
|
||||
SHFILEOPSTRUCT op;
|
||||
process_string_fromtab(buf,parms[0]);
|
||||
process_string_fromtab(buf2,parms[1]);
|
||||
process_string_fromtab(buf,parm0);
|
||||
process_string_fromtab(buf2,parm1);
|
||||
log_printf3("CopyFiles \"%s\"->\"%s\"",buf,buf2);
|
||||
op.hwnd=g_hwnd;
|
||||
op.wFunc=FO_COPY;
|
||||
|
@ -891,7 +898,7 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
op.pFrom=buf;
|
||||
op.pTo=buf2;
|
||||
op.lpszProgressTitle=buf3;
|
||||
op.fFlags=parms[2];
|
||||
op.fFlags=parm2;
|
||||
update_status_text("",buf3);
|
||||
res=SHFileOperation(&op);
|
||||
if (res)
|
||||
|
@ -905,7 +912,7 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
#ifdef NSIS_SUPPORT_REBOOT
|
||||
case EW_REBOOT:
|
||||
exec_errorflag++;
|
||||
if (parms[0] == 0xbadf00d)
|
||||
if (parm0 == 0xbadf00d)
|
||||
{
|
||||
HANDLE h=LoadLibrary("advapi32.dll");
|
||||
if (h)
|
||||
|
@ -938,7 +945,7 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
}
|
||||
break;
|
||||
case EW_IFREBOOTFLAG: return parms[!exec_rebootflag];
|
||||
case EW_SETREBOOTFLAG: exec_rebootflag=parms[0]; return 0;
|
||||
case EW_SETREBOOTFLAG: exec_rebootflag=parm0; return 0;
|
||||
#endif//NSIS_SUPPORT_REBOOT
|
||||
#ifdef NSIS_SUPPORT_INIFILES
|
||||
case EW_WRITEINI:
|
||||
|
@ -949,18 +956,18 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
mystrcpy(buf2,"<RM>");
|
||||
mystrcpy(buf3,buf2);
|
||||
#endif
|
||||
process_string_fromtab(buf,parms[0]);
|
||||
if (parms[1]>=0)
|
||||
process_string_fromtab(buf,parm0);
|
||||
if (parm1>=0)
|
||||
{
|
||||
process_string_fromtab(buf2,parms[1]);
|
||||
process_string_fromtab(buf2,parm1);
|
||||
sec=buf2;
|
||||
}
|
||||
if (parms[2]>=0)
|
||||
if (parm2>=0)
|
||||
{
|
||||
process_string_fromtab(buf3,parms[2]);
|
||||
process_string_fromtab(buf3,parm2);
|
||||
ent=buf3;
|
||||
}
|
||||
process_string_fromtab(buf4,parms[3]);
|
||||
process_string_fromtab(buf4,parm3);
|
||||
log_printf5("WriteINIStr: wrote [%s] %s=%s in %s",buf,buf2,buf3,buf4);
|
||||
if (!WritePrivateProfileString(buf,sec,ent,buf4)) exec_errorflag++;
|
||||
}
|
||||
|
@ -968,10 +975,10 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
case EW_READINISTR:
|
||||
{
|
||||
static const char *errstr="!N~";
|
||||
char *p=g_usrvars[parms[0]];
|
||||
process_string_fromtab(buf,parms[1]);
|
||||
process_string_fromtab(buf2,parms[2]);
|
||||
process_string_fromtab(buf3,parms[3]);
|
||||
char *p=g_usrvars[parm0];
|
||||
process_string_fromtab(buf,parm1);
|
||||
process_string_fromtab(buf2,parm2);
|
||||
process_string_fromtab(buf3,parm3);
|
||||
GetPrivateProfileString(buf,buf2,errstr,p,NSIS_MAX_STRLEN-1,buf3);
|
||||
if (*((int*)errstr) == *((int*)p))
|
||||
{
|
||||
|
@ -984,15 +991,15 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
#ifdef NSIS_SUPPORT_REGISTRYFUNCTIONS
|
||||
case EW_DELREG:
|
||||
{
|
||||
int rootkey=parms[0];
|
||||
int rootkey=parm0;
|
||||
exec_errorflag++;
|
||||
process_string_fromtab(buf4,parms[1]);
|
||||
if (parms[2] != -1)
|
||||
process_string_fromtab(buf4,parm1);
|
||||
if (parm2 != -1)
|
||||
{
|
||||
HKEY hKey;
|
||||
if (RegOpenKeyEx((HKEY)rootkey,buf4,0,KEY_ALL_ACCESS,&hKey) == ERROR_SUCCESS)
|
||||
{
|
||||
process_string_fromtab(buf,parms[2]);
|
||||
process_string_fromtab(buf,parm2);
|
||||
log_printf4("DeleteRegValue: %d\\%s\\%s",rootkey,buf4,buf);
|
||||
if (RegDeleteValue(hKey,buf) == ERROR_SUCCESS) exec_errorflag--;
|
||||
RegCloseKey(hKey);
|
||||
|
@ -1001,36 +1008,36 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
else
|
||||
{
|
||||
log_printf3("DeleteRegKey: %d\\%s",rootkey,buf4);
|
||||
if (myRegDeleteKeyEx((HKEY)rootkey,buf4,parms[3]) == ERROR_SUCCESS) exec_errorflag--;
|
||||
if (myRegDeleteKeyEx((HKEY)rootkey,buf4,parm3) == ERROR_SUCCESS) exec_errorflag--;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
case EW_WRITEREG: // write registry value
|
||||
{
|
||||
HKEY hKey;
|
||||
int rootkey=parms[0];
|
||||
int type=parms[4];
|
||||
int rootkey=parm0;
|
||||
int type=parm4;
|
||||
exec_errorflag++;
|
||||
process_string_fromtab(buf2,parms[2]);
|
||||
process_string_fromtab(buf4,parms[1]);
|
||||
process_string_fromtab(buf2,parm2);
|
||||
process_string_fromtab(buf4,parm1);
|
||||
if (RegCreateKey((HKEY)rootkey,buf4,&hKey) == ERROR_SUCCESS)
|
||||
{
|
||||
if (type <= 1)
|
||||
{
|
||||
process_string_fromtab(buf3,parms[3]);
|
||||
process_string_fromtab(buf3,parm3);
|
||||
if (RegSetValueEx(hKey,buf2,0,type==1?REG_SZ:REG_EXPAND_SZ,buf3,mystrlen(buf3)+1) == ERROR_SUCCESS) exec_errorflag--;
|
||||
log_printf5("WriteRegStr: set %d\\%s\\%s to %s",rootkey,buf4,buf2,buf3);
|
||||
}
|
||||
else if (type == 2)
|
||||
{
|
||||
DWORD l;
|
||||
l=process_string_fromtab_toint(parms[3]);
|
||||
l=process_string_fromtab_toint(parm3);
|
||||
if (RegSetValueEx(hKey,buf2,0,REG_DWORD,(unsigned char*)&l,4) == ERROR_SUCCESS) exec_errorflag--;
|
||||
log_printf5("WriteRegDWORD: set %d\\%s\\%s to %d",rootkey,buf4,buf2,l);
|
||||
}
|
||||
else if (type == 3)
|
||||
{
|
||||
int len=GetCompressedDataFromDataBlockToMemory(parms[3], buf3, NSIS_MAX_STRLEN);
|
||||
int len=GetCompressedDataFromDataBlockToMemory(parm3, buf3, NSIS_MAX_STRLEN);
|
||||
if (len >= 0)
|
||||
{
|
||||
if (RegSetValueEx(hKey,buf2,0,REG_BINARY,buf3,len) == ERROR_SUCCESS) exec_errorflag--;
|
||||
|
@ -1046,10 +1053,10 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
case EW_READREGSTR: // read registry string
|
||||
{
|
||||
HKEY hKey;
|
||||
char *p=g_usrvars[parms[0]];
|
||||
int rootkey=parms[1];
|
||||
process_string_fromtab(buf,parms[2]); // buf == subkey
|
||||
process_string_fromtab(buf2,parms[3]); // buf == key name
|
||||
char *p=g_usrvars[parm0];
|
||||
int rootkey=parm1;
|
||||
process_string_fromtab(buf,parm2); // buf == subkey
|
||||
process_string_fromtab(buf2,parm3); // buf == key name
|
||||
p[0]=0;
|
||||
if (RegOpenKeyEx((HKEY)rootkey,buf,0,KEY_READ,&hKey) == ERROR_SUCCESS)
|
||||
{
|
||||
|
@ -1066,10 +1073,10 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
{
|
||||
if (t==REG_DWORD)
|
||||
{
|
||||
if (!parms[4]) exec_errorflag++;
|
||||
if (!parm4) exec_errorflag++;
|
||||
myitoa(p,*((DWORD*)p));
|
||||
}
|
||||
else if (parms[4]) exec_errorflag++;
|
||||
else if (parm4) exec_errorflag++;
|
||||
}
|
||||
RegCloseKey(hKey);
|
||||
}
|
||||
|
@ -1079,14 +1086,14 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
case EW_REGENUM:
|
||||
{
|
||||
HKEY key;
|
||||
char *p=g_usrvars[parms[0]];
|
||||
int b=process_string_fromtab_toint(parms[3]);
|
||||
process_string_fromtab(buf2,parms[2]);
|
||||
char *p=g_usrvars[parm0];
|
||||
int b=process_string_fromtab_toint(parm3);
|
||||
process_string_fromtab(buf2,parm2);
|
||||
p[0]=0;
|
||||
if (RegOpenKeyEx((HKEY)parms[1],buf2,0,KEY_ALL_ACCESS,&key) == ERROR_SUCCESS)
|
||||
if (RegOpenKeyEx((HKEY)parm1,buf2,0,KEY_ALL_ACCESS,&key) == ERROR_SUCCESS)
|
||||
{
|
||||
DWORD d=NSIS_MAX_STRLEN-1;
|
||||
if (parms[4]) RegEnumKey(key,b,p,d);
|
||||
if (parm4) RegEnumKey(key,b,p,d);
|
||||
else RegEnumValue(key,b,p,&d,NULL,NULL,NULL,NULL);
|
||||
p[NSIS_MAX_STRLEN-1]=0;
|
||||
RegCloseKey(key);
|
||||
|
@ -1099,16 +1106,16 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
#ifdef NSIS_SUPPORT_FILEFUNCTIONS
|
||||
case EW_FCLOSE:
|
||||
{
|
||||
char *t=g_usrvars[parms[0]];
|
||||
char *t=g_usrvars[parm0];
|
||||
if (*t) CloseHandle((HANDLE)myatoi(t));
|
||||
}
|
||||
return 0;
|
||||
case EW_FOPEN:
|
||||
{
|
||||
HANDLE h;
|
||||
char *handleout=g_usrvars[parms[3]];
|
||||
process_string_fromtab(buf,parms[0]);
|
||||
h=myOpenFile(buf,parms[1],parms[2]);
|
||||
char *handleout=g_usrvars[parm3];
|
||||
process_string_fromtab(buf,parm0);
|
||||
h=myOpenFile(buf,parm1,parm2);
|
||||
if (h == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
*handleout=0;
|
||||
|
@ -1124,15 +1131,15 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
{
|
||||
DWORD dw;
|
||||
int l;
|
||||
char *t=g_usrvars[parms[0]];
|
||||
if (parms[2])
|
||||
char *t=g_usrvars[parm0];
|
||||
if (parm2)
|
||||
{
|
||||
((unsigned char *)buf2)[0]=process_string_fromtab_toint(parms[1])&0xff;
|
||||
((unsigned char *)buf2)[0]=process_string_fromtab_toint(parm1)&0xff;
|
||||
l=1;
|
||||
}
|
||||
else
|
||||
{
|
||||
process_string_fromtab(buf2,parms[1]);
|
||||
process_string_fromtab(buf2,parm1);
|
||||
l=mystrlen(buf2);
|
||||
}
|
||||
if (!*t || !WriteFile((HANDLE)myatoi(t),buf2,l,&dw,NULL))
|
||||
|
@ -1143,11 +1150,11 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
return 0;
|
||||
case EW_FGETS:
|
||||
{
|
||||
char *textout=g_usrvars[parms[1]];
|
||||
char *textout=g_usrvars[parm1];
|
||||
DWORD dw;
|
||||
int rpos=0;
|
||||
char *hptr=g_usrvars[parms[0]];
|
||||
int maxlen=process_string_fromtab_toint(parms[2]);
|
||||
char *hptr=g_usrvars[parm0];
|
||||
int maxlen=process_string_fromtab_toint(parm2);
|
||||
if (maxlen<1) return 0;
|
||||
if (maxlen > NSIS_MAX_STRLEN-1) maxlen=NSIS_MAX_STRLEN-1;
|
||||
if (*hptr)
|
||||
|
@ -1159,7 +1166,7 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
{
|
||||
char c;
|
||||
if (!ReadFile(h,&c,1,&dw,NULL) || dw != 1) break;
|
||||
if (parms[3])
|
||||
if (parm3)
|
||||
{
|
||||
myitoa(textout,(unsigned int)(unsigned char)c);
|
||||
return 0;
|
||||
|
@ -1181,14 +1188,14 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
return 0;
|
||||
case EW_FSEEK:
|
||||
{
|
||||
char *t=g_usrvars[parms[0]];
|
||||
char *t=g_usrvars[parm0];
|
||||
if (*t)
|
||||
{
|
||||
DWORD v=SetFilePointer((HANDLE)myatoi(t),process_string_fromtab_toint(parms[1]),NULL,parms[2]);
|
||||
DWORD v=SetFilePointer((HANDLE)myatoi(t),process_string_fromtab_toint(parm1),NULL,parm2);
|
||||
|
||||
if (parms[3]>=0)
|
||||
if (parm3>=0)
|
||||
{
|
||||
myitoa(g_usrvars[parms[3]],v);
|
||||
myitoa(g_usrvars[parm3],v);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1197,14 +1204,14 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
#ifdef NSIS_SUPPORT_FINDFIRST
|
||||
case EW_FINDCLOSE:
|
||||
{
|
||||
char *t=g_usrvars[parms[0]];
|
||||
char *t=g_usrvars[parm0];
|
||||
if (*t) FindClose((HANDLE)myatoi(t));
|
||||
}
|
||||
return 0;
|
||||
case EW_FINDNEXT:
|
||||
{
|
||||
char *textout=g_usrvars[parms[0]];
|
||||
char *t=g_usrvars[parms[1]];
|
||||
char *textout=g_usrvars[parm0];
|
||||
char *t=g_usrvars[parm1];
|
||||
WIN32_FIND_DATA fd;
|
||||
if (*t && FindNextFile((HANDLE)myatoi(t),&fd))
|
||||
{
|
||||
|
@ -1220,11 +1227,11 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
return 0;
|
||||
case EW_FINDFIRST:
|
||||
{
|
||||
char *textout=g_usrvars[parms[1]];
|
||||
char *handleout=g_usrvars[parms[2]];
|
||||
char *textout=g_usrvars[parm1];
|
||||
char *handleout=g_usrvars[parm2];
|
||||
HANDLE h;
|
||||
WIN32_FIND_DATA fd;
|
||||
process_string_fromtab(buf,parms[0]);
|
||||
process_string_fromtab(buf,parm0);
|
||||
h=FindFirstFile(buf,&fd);
|
||||
if (h == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
|
@ -1245,7 +1252,7 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
{
|
||||
int ret=-666;
|
||||
HANDLE hFile;
|
||||
process_string_fromtab(buf,parms[0]);
|
||||
process_string_fromtab(buf,parm0);
|
||||
|
||||
if (validpathspec(buf))
|
||||
{
|
||||
|
@ -1309,16 +1316,16 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
#endif//NSIS_CONFIG_UNINSTALL_SUPPORT
|
||||
#ifdef NSIS_CONFIG_LOG
|
||||
case EW_LOG:
|
||||
if (parms[0])
|
||||
if (parm0)
|
||||
{
|
||||
log_printf2("settings logging to %d",parms[1]);
|
||||
log_dolog=parms[1];
|
||||
log_printf2("logging set to %d",parms[1]);
|
||||
log_printf2("settings logging to %d",parm1);
|
||||
log_dolog=parm1;
|
||||
log_printf2("logging set to %d",parm1);
|
||||
if (!g_log_file && log_dolog) build_g_logfile();
|
||||
}
|
||||
else
|
||||
{
|
||||
process_string_fromtab(buf,parms[1]);
|
||||
process_string_fromtab(buf,parm1);
|
||||
log_printf2("%s",buf);
|
||||
}
|
||||
return 0;
|
||||
|
@ -1326,7 +1333,7 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
#ifdef NSIS_CONFIG_COMPONENTPAGE
|
||||
case EW_SECTIONSET:
|
||||
{
|
||||
int x=process_string_fromtab_toint(parms[0]);
|
||||
int x=process_string_fromtab_toint(parm0);
|
||||
if (g_inst_section && x >= 0 && x < g_inst_header->num_sections)
|
||||
{
|
||||
int z=0;
|
||||
|
@ -1336,21 +1343,21 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
for (a = 0; a < x; a ++) if (g_inst_section[a].name_ptr>=0) z++;
|
||||
}
|
||||
|
||||
if (parms[1]==0) //set text
|
||||
if (parm1==0) //set text
|
||||
{
|
||||
if (g_SectionHack)
|
||||
{
|
||||
SendMessage(g_SectionHack,WM_USER+0x17,x,parms[2]);
|
||||
SendMessage(g_SectionHack,WM_USER+0x17,x,parm2);
|
||||
}
|
||||
g_inst_section[x].name_ptr=parms[2];
|
||||
g_inst_section[x].name_ptr=parm2;
|
||||
}
|
||||
else if (parms[1]==1) // get text
|
||||
else if (parm1==1) // get text
|
||||
{
|
||||
process_string_fromtab(g_usrvars[parms[2]],g_inst_section[x].name_ptr);
|
||||
process_string_fromtab(g_usrvars[parm2],g_inst_section[x].name_ptr);
|
||||
}
|
||||
else if (parms[1]==2) // set flags
|
||||
else if (parm1==2) // set flags
|
||||
{
|
||||
g_inst_section[x].default_state=process_string_fromtab_toint(parms[2]);
|
||||
g_inst_section[x].default_state=process_string_fromtab_toint(parm2);
|
||||
if (g_SectionHack)
|
||||
{
|
||||
SendMessage(g_SectionHack,WM_USER+0x18,x,(LPARAM)!!(g_inst_section[x].default_state&DFS_SET));
|
||||
|
@ -1358,7 +1365,7 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
}
|
||||
else // get flags
|
||||
{
|
||||
myitoa(g_usrvars[parms[2]],g_inst_section[x].default_state);
|
||||
myitoa(g_usrvars[parm2],g_inst_section[x].default_state);
|
||||
}
|
||||
}
|
||||
else exec_errorflag++;
|
||||
|
@ -1370,16 +1377,16 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
case EW_SETBRANDINGIMAGE:
|
||||
{
|
||||
RECT r;
|
||||
HWND hwImage = GetDlgItem(g_hwnd, parms[1]);
|
||||
HWND hwImage = GetDlgItem(g_hwnd, parm1);
|
||||
GetWindowRect(hwImage, &r);
|
||||
process_string_fromtab(buf, parms[0]);
|
||||
process_string_fromtab(buf, parm0);
|
||||
if (g_hBrandingBitmap) DeleteObject(g_hBrandingBitmap);
|
||||
g_hBrandingBitmap=LoadImage(
|
||||
0,
|
||||
buf,
|
||||
IMAGE_BITMAP,
|
||||
parms[2]?r.right-r.left:0,
|
||||
parms[2]?r.bottom-r.top:0,
|
||||
parm2?r.right-r.left:0,
|
||||
parm2?r.bottom-r.top:0,
|
||||
LR_LOADFROMFILE
|
||||
);
|
||||
SendMessage(
|
||||
|
@ -1400,27 +1407,27 @@ static int NSISCALL ExecuteEntry(entry *entries, int pos)
|
|||
#endif // NSIS_CONFIG_PLUGIN_SUPPORT
|
||||
case EW_CREATEFONT:
|
||||
myitoa(
|
||||
g_usrvars[parms[0]],
|
||||
g_usrvars[parm0],
|
||||
(int)CreateFont(
|
||||
process_string_fromtab_toint(parms[2]),
|
||||
process_string_fromtab_toint(parm2),
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
process_string_fromtab_toint(parms[3]),
|
||||
parms[4]&1,
|
||||
parms[4]&2,
|
||||
parms[4]&4,
|
||||
process_string_fromtab_toint(parm3),
|
||||
parm4&1,
|
||||
parm4&2,
|
||||
parm4&4,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
GetStringFromStringTab(parms[1])
|
||||
GetStringFromStringTab(parm1)
|
||||
)
|
||||
);
|
||||
return 0;
|
||||
case EW_SETLANG:
|
||||
set_language(process_string_fromtab_toint(parms[0]));
|
||||
set_language(process_string_fromtab_toint(parm0));
|
||||
return 0;
|
||||
}
|
||||
my_MessageBox(STR(LANG_INSTCORRUPTED),MB_OK|MB_ICONSTOP);
|
||||
|
|
|
@ -1,8 +1,14 @@
|
|||
extern char g_usrvars[24][NSIS_MAX_STRLEN];
|
||||
#define state_command_line (g_usrvars[20])
|
||||
/*#define state_command_line (g_usrvars[20])
|
||||
#define state_install_directory (g_usrvars[21])
|
||||
#define state_output_directory (g_usrvars[22])
|
||||
#define state_exe_directory (g_usrvars[23])
|
||||
#define state_exe_directory (g_usrvars[23])*/
|
||||
// changed by Amir Szekely 28th August 2002
|
||||
// smaller exehead
|
||||
extern char *state_command_line;
|
||||
extern char *state_install_directory;
|
||||
extern char *state_output_directory;
|
||||
extern char *state_exe_directory;
|
||||
|
||||
extern char g_caption[NSIS_MAX_STRLEN*2];
|
||||
extern HWND g_hwnd;
|
||||
|
|
|
@ -17,6 +17,10 @@ extern char plugins_temp_dir[NSIS_MAX_STRLEN];
|
|||
#endif
|
||||
|
||||
char g_usrvars[24][NSIS_MAX_STRLEN];
|
||||
char *state_command_line=g_usrvars[20];
|
||||
char *state_install_directory=g_usrvars[21];
|
||||
char *state_output_directory=g_usrvars[22];
|
||||
char *state_exe_directory=g_usrvars[23];
|
||||
|
||||
HANDLE g_hInstance;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue