$QUICKLAUNCH will now fall back to current user too
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@2124 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
parent
d7561bbe5e
commit
4df57aea70
1 changed files with 21 additions and 30 deletions
|
@ -313,37 +313,8 @@ void NSISCALL myRegGetStr(HKEY root, const char *sub, const char *name, char *ou
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static char smwcvesf[]="Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
|
|
||||||
//int g_all_user_var_flag;
|
|
||||||
|
|
||||||
static void NSISCALL queryShellFolders(const char *name_, char *out)
|
|
||||||
{
|
|
||||||
static char name[20] = "Common ";
|
|
||||||
mystrcpy(name + 7, name_);
|
|
||||||
{
|
|
||||||
char f=g_flags.all_user_var;
|
|
||||||
|
|
||||||
again:
|
|
||||||
|
|
||||||
smwcvesf[41]='\\';
|
|
||||||
myRegGetStr(f?HKEY_LOCAL_MACHINE:HKEY_CURRENT_USER,
|
|
||||||
smwcvesf,
|
|
||||||
f?name:name_,out);
|
|
||||||
if (!out[0])
|
|
||||||
{
|
|
||||||
if (f)
|
|
||||||
{
|
|
||||||
f=0; goto again;
|
|
||||||
}
|
|
||||||
mystrcpy(out,temp_directory);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
char ps_tmpbuf[NSIS_MAX_STRLEN*2];
|
char ps_tmpbuf[NSIS_MAX_STRLEN*2];
|
||||||
|
|
||||||
|
|
||||||
char * NSISCALL process_string_fromtab(char *out, int offs)
|
char * NSISCALL process_string_fromtab(char *out, int offs)
|
||||||
{
|
{
|
||||||
return lstrcpyn(out,process_string(GetStringFromStringTab(offs)),NSIS_MAX_STRLEN);
|
return lstrcpyn(out,process_string(GetStringFromStringTab(offs)),NSIS_MAX_STRLEN);
|
||||||
|
@ -423,6 +394,7 @@ char * NSISCALL process_string(const char *in)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DWORD f;
|
DWORD f;
|
||||||
|
static char smwcvesf[]="Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
|
||||||
switch (nVarIdx) // The order of this list must match that in ..\strlist.cpp (err, build.cpp -J)
|
switch (nVarIdx) // The order of this list must match that in ..\strlist.cpp (err, build.cpp -J)
|
||||||
{
|
{
|
||||||
case VAR_CODES_START + 0: // HWNDPARENT
|
case VAR_CODES_START + 0: // HWNDPARENT
|
||||||
|
@ -476,7 +448,26 @@ char * NSISCALL process_string(const char *in)
|
||||||
"Start Menu",
|
"Start Menu",
|
||||||
"AppData"
|
"AppData"
|
||||||
};
|
};
|
||||||
queryShellFolders(tab[nVarIdx-(VAR_CODES_START+27)], out);
|
static char name[20]="Common ";
|
||||||
|
const char *name_=tab[nVarIdx-(VAR_CODES_START+27)];
|
||||||
|
mystrcpy(name+7,name_);
|
||||||
|
f=g_flags.all_user_var & (nVarIdx != VAR_CODES_START + 31);
|
||||||
|
|
||||||
|
again:
|
||||||
|
|
||||||
|
smwcvesf[41]='\\';
|
||||||
|
myRegGetStr(f?HKEY_LOCAL_MACHINE:HKEY_CURRENT_USER,
|
||||||
|
smwcvesf,
|
||||||
|
f?name:name_,out);
|
||||||
|
if (!out[0])
|
||||||
|
{
|
||||||
|
if (f)
|
||||||
|
{
|
||||||
|
f=0; goto again;
|
||||||
|
}
|
||||||
|
mystrcpy(out,temp_directory);
|
||||||
|
}
|
||||||
|
|
||||||
if (nVarIdx == VAR_CODES_START + 31) {
|
if (nVarIdx == VAR_CODES_START + 31) {
|
||||||
lstrcat(out, "\\Microsoft\\Internet Explorer\\Quick Launch");
|
lstrcat(out, "\\Microsoft\\Internet Explorer\\Quick Launch");
|
||||||
f = GetFileAttributes(out);
|
f = GetFileAttributes(out);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue