Shell Folders code now use "current user" if cannot retrieve nothing for "all users"

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@3298 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
ramon18 2003-12-22 14:34:05 +00:00
parent 660bbf5e2d
commit 6542144aba

View file

@ -491,10 +491,19 @@ char * NSISCALL GetNSISString(char *outbuf, int strtab)
LPITEMIDLIST idl;
int qLaunch=0;
int nCreateFlag = CSIDL_FLAG_CREATE;
int nFolderCurUser;
nVarIdx = (*(WORD*)in & 0x0FFF)-1; in+=sizeof(WORD); // Read code for current user
nFolderCurUser = (*(WORD*)in & 0x0FFF)-1; // Read code for current user
in+=sizeof(WORD);
nVarIdx = nFolderCurUser;
if ( g_exec_flags.all_user_var )
nVarIdx = (*(WORD*)in & 0x0FFF)-1; in+=sizeof(WORD); // Use code for All users instead
{
nVarIdx = (*(WORD*)in & 0x0FFF)-1; // Use code for All users instead
}
else
nFolderCurUser=-1; // Already using current user
in+=sizeof(WORD);
*out=0;
@ -511,7 +520,7 @@ char * NSISCALL GetNSISString(char *outbuf, int strtab)
mystrcpy(out, "C:\\Program Files");
break;
case CSIDL_DESKTOP: // QUICKLAUNCH
nVarIdx |= CSIDL_APPDATA;
nVarIdx = CSIDL_APPDATA;
qLaunch = 1;
// dont break
default:
@ -524,13 +533,22 @@ char * NSISCALL GetNSISString(char *outbuf, int strtab)
lstrcat(out,"\\Microsoft\\Internet Explorer\\Quick Launch");
}
}
else
*out=0;
break;
}
if ( *out || nCreateFlag == 0 )
if ( *out )
break; // Found something
if ( nCreateFlag == 0 )
{
if ( nFolderCurUser == -1 ) // Already dropped to current user???
break;
else
{
nVarIdx = nFolderCurUser; // Drop to current user if fail
nFolderCurUser = -1;
}
}
else
nCreateFlag = 0; // remove create flag if it fails
}