Some more optimizations

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@3223 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
kichik 2003-11-27 23:21:15 +00:00
parent edbc22d642
commit b5a430dfa6
3 changed files with 37 additions and 38 deletions

View file

@ -512,7 +512,7 @@ skipPage:
if (!ui_dlg_visible && m_curwnd)
{
ShowWindow(hwndDlg, SW_SHOW);
ui_dlg_visible = TRUE;
ui_dlg_visible = 1;
}
if (bNextPage)

View file

@ -1011,22 +1011,21 @@ static int NSISCALL ExecuteEntry(entry *entry_)
hres = psl->lpVtbl->QueryInterface(psl,&IID_IPersistFile, (void **) &ppf);
if (SUCCEEDED(hres))
{
hres = psl->lpVtbl->SetPath(psl,buf1);
psl->lpVtbl->SetWorkingDirectory(psl,state_output_directory);
if ((parm4&0xff00)>>8) psl->lpVtbl->SetShowCmd(psl,(parm4&0xff00)>>8);
psl->lpVtbl->SetHotkey(psl,(unsigned short)(parm4>>16));
if (buf3[0]) psl->lpVtbl->SetIconLocation(psl,buf3,parm4&0xff);
psl->lpVtbl->SetArguments(psl,buf0);
psl->lpVtbl->SetDescription(psl,buf4);
hres = psl->lpVtbl->SetPath(psl,buf1);
psl->lpVtbl->SetWorkingDirectory(psl,state_output_directory);
if ((parm4&0xff00)>>8) psl->lpVtbl->SetShowCmd(psl,(parm4&0xff00)>>8);
psl->lpVtbl->SetHotkey(psl,(unsigned short)(parm4>>16));
if (buf3[0]) psl->lpVtbl->SetIconLocation(psl,buf3,parm4&0xff);
psl->lpVtbl->SetArguments(psl,buf0);
psl->lpVtbl->SetDescription(psl,buf4);
if (SUCCEEDED(hres))
{
static WCHAR wsz[1024];
wsz[0]=0;
MultiByteToWideChar(CP_ACP, 0, buf2, -1, wsz, 1024);
hres=ppf->lpVtbl->Save(ppf,(const WCHAR*)wsz,TRUE);
}
if (SUCCEEDED(hres))
{
static WCHAR wsz[1024];
wsz[0]=0;
MultiByteToWideChar(CP_ACP, 0, buf2, -1, wsz, 1024);
hres=ppf->lpVtbl->Save(ppf,(const WCHAR*)wsz,TRUE);
}
ppf->lpVtbl->Release(ppf);
}
psl->lpVtbl->Release(psl);
@ -1187,34 +1186,33 @@ static int NSISCALL ExecuteEntry(entry *entry_)
HKEY hKey;
int rootkey=parm0;
int type=parm4;
int rtype=parm5;
char *buf1=GetStringFromParm(0x12);
char *buf3=GetStringFromParm(0x31);
exec_error++;
if (RegCreateKey((HKEY)rootkey,buf3,&hKey) == ERROR_SUCCESS)
{
if (type <= 1)
LPBYTE data = (LPBYTE) buf2;
DWORD size = 0;
if (type == REG_SZ)
{
char *buf2=GetStringFromParm(0x23);
if (RegSetValueEx(hKey,buf1,0,type==1?REG_SZ:REG_EXPAND_SZ,buf2,mystrlen(buf2)+1) == ERROR_SUCCESS) exec_error--;
GetStringFromParm(0x23);
size = mystrlen((char *) data) + 1;
log_printf5("WriteRegStr: set %d\\%s\\%s to %s",rootkey,buf3,buf1,buf2);
}
else if (type == 2)
if (type == REG_DWORD)
{
DWORD l;
l=GetIntFromParm(3);
if (RegSetValueEx(hKey,buf1,0,REG_DWORD,(unsigned char*)&l,4) == ERROR_SUCCESS) exec_error--;
log_printf5("WriteRegDWORD: set %d\\%s\\%s to %d",rootkey,buf3,buf1,l);
*(LPDWORD) data = GetIntFromParm(3);
size = sizeof(DWORD);
log_printf5("WriteRegDWORD: set %d\\%s\\%s to %d",rootkey,buf3,buf1,*(LPDWORD)data);
}
else if (type == 3)
if (type == REG_BINARY)
{
int len=GetCompressedDataFromDataBlockToMemory(parm3, buf2, NSIS_MAX_STRLEN);
if (len >= 0)
{
if (RegSetValueEx(hKey,buf1,0,REG_BINARY,buf2,len) == ERROR_SUCCESS) exec_error--;
}
size = GetCompressedDataFromDataBlockToMemory(parm3, data, NSIS_MAX_STRLEN);
log_printf5("WriteRegBin: set %d\\%s\\%s with %d bytes",rootkey,buf3,buf1,len);
}
if (size >= 0 && RegSetValueEx(hKey,buf1,0,rtype,data,size) == ERROR_SUCCESS)
exec_error--;
RegCloseKey(hKey);
}
else { log_printf3("WriteReg: error creating key %d\\%s",rootkey,buf3); }
@ -1572,7 +1570,8 @@ static int NSISCALL ExecuteEntry(entry *entry_)
#ifdef NSIS_LOCKWINDOW_SUPPORT
case EW_LOCKWINDOW:
{
SendMessage(g_hwnd, WM_SETREDRAW, parm0 && ui_dlg_visible, 0);
// ui_dlg_visible is 1 or 0, so is parm0
SendMessage(g_hwnd, WM_SETREDRAW, parm0 & ui_dlg_visible, 0);
if ( parm0 )
InvalidateRect(g_hwnd, NULL, FALSE);
}

View file

@ -4437,11 +4437,11 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
SCRIPT_MSG("%s: %s\\%s\\%s=%s\n",
line.gettoken_str(0),line.gettoken_str(1),line.gettoken_str(2),line.gettoken_str(3),line.gettoken_str(4));
ent.offsets[3]=add_string(line.gettoken_str(4));
ent.offsets[4]=ent.offsets[5]=REG_SZ;
if (which_token == TOK_WRITEREGEXPANDSTR)
{
ent.offsets[4]=0;
ent.offsets[5]=REG_EXPAND_SZ;
}
else ent.offsets[4]=1;
}
if (which_token == TOK_WRITEREGBIN)
{
@ -4476,12 +4476,12 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
line.gettoken_str(1),line.gettoken_str(2),line.gettoken_str(3),line.gettoken_str(4));
ent.offsets[3]=add_db_data(data,data_len);
if (ent.offsets[3] < 0) return PS_ERROR;
ent.offsets[4]=3;
ent.offsets[4]=ent.offsets[5]=REG_BINARY;
}
if (which_token == TOK_WRITEREGDWORD)
{
ent.offsets[3]=add_string(line.gettoken_str(4));
ent.offsets[4]=2;
ent.offsets[4]=ent.offsets[5]=REG_DWORD;
SCRIPT_MSG("WriteRegDWORD: %s\\%s\\%s=%s\n",
line.gettoken_str(1),line.gettoken_str(2),line.gettoken_str(3),line.gettoken_str(4));
@ -5188,8 +5188,8 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
SCRIPT_MSG("LockWindow: lock state=%d\n",line.gettoken_str(1));
ent.which=EW_LOCKWINDOW;
ent.offsets[0]=line.gettoken_enum(1,"on\0off\0");
if ( ent.offsets[0] == -1 )
PRINTHELP();
if (ent.offsets[0] == -1)
PRINTHELP();
return add_entry(&ent);
#else
case TOK_LOCKWINDOW: