diff --git a/Source/exehead/exec.c b/Source/exehead/exec.c index 8ff84993..57cd0fd3 100644 --- a/Source/exehead/exec.c +++ b/Source/exehead/exec.c @@ -618,21 +618,11 @@ static int NSISCALL ExecuteEntry(entry *entry_) { char *p=var0; char *buf0=GetStringFromParm(0x01); - if (parm2) + if (!ExpandEnvironmentStrings(buf0,p,NSIS_MAX_STRLEN) + || (parm2 && !lstrcmp(buf0, p))) { - if (!GetEnvironmentVariable(buf0,p,NSIS_MAX_STRLEN)) - { - exec_error++; - *p=0; - } - } - else - { - if (!ExpandEnvironmentStrings(buf0,p,NSIS_MAX_STRLEN)) - { - exec_error++; - *p=0; - } + exec_error++; + *p=0; } p[NSIS_MAX_STRLEN-1]=0; } diff --git a/Source/script.cpp b/Source/script.cpp index 0cbbb9cc..123b9fac 100644 --- a/Source/script.cpp +++ b/Source/script.cpp @@ -5239,7 +5239,11 @@ int CEXEBuild::doCommand(int which_token, LineParser &line) ent.which=EW_READENVSTR; ent.offsets[0]=GetUserVarIndex(line, 1); { - ent.offsets[1]=add_string(line.gettoken_str(2)); + char str[NSIS_MAX_STRLEN]; + strcpy(str, "%"); + strcat(str, line.gettoken_str(2)); + strcat(str, "%"); + ent.offsets[1]=add_string(str); if (ent.offsets[0] < 0 || strlen(line.gettoken_str(2))<1) PRINTHELP() } ent.offsets[2]=1;