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; LPITEMIDLIST idl;
int qLaunch=0; int qLaunch=0;
int nCreateFlag = CSIDL_FLAG_CREATE; 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 ) 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; *out=0;
@ -511,7 +520,7 @@ char * NSISCALL GetNSISString(char *outbuf, int strtab)
mystrcpy(out, "C:\\Program Files"); mystrcpy(out, "C:\\Program Files");
break; break;
case CSIDL_DESKTOP: // QUICKLAUNCH case CSIDL_DESKTOP: // QUICKLAUNCH
nVarIdx |= CSIDL_APPDATA; nVarIdx = CSIDL_APPDATA;
qLaunch = 1; qLaunch = 1;
// dont break // dont break
default: default:
@ -524,13 +533,22 @@ char * NSISCALL GetNSISString(char *outbuf, int strtab)
lstrcat(out,"\\Microsoft\\Internet Explorer\\Quick Launch"); lstrcat(out,"\\Microsoft\\Internet Explorer\\Quick Launch");
} }
} }
else
*out=0;
break; break;
} }
if ( *out || nCreateFlag == 0 ) if ( *out )
break; // Found something
if ( nCreateFlag == 0 )
{
if ( nFolderCurUser == -1 ) // Already dropped to current user???
break; break;
else
{
nVarIdx = nFolderCurUser; // Drop to current user if fail
nFolderCurUser = -1;
}
}
else else
nCreateFlag = 0; // remove create flag if it fails nCreateFlag = 0; // remove create flag if it fails
} }