diff --git a/Source/script.cpp b/Source/script.cpp index 31c2a7d42a..196d094c5f 100644 --- a/Source/script.cpp +++ b/Source/script.cpp @@ -2646,12 +2646,26 @@ int CEXEBuild::doCommand(int which_token, LineParser &line) DefineInnerLangString(NLF_CREATED_UNINST); } return add_entry(&ent); + case TOK_REQUNINSTEXECLEVEL: + if (uninstall_mode) + { + switch (line.gettoken_enum(1,_T("none\0user\0highest\0admin\0"))) + { + case 0: manifest_exec_level = manifest::exec_level_none; break; + case 1: manifest_exec_level = manifest::exec_level_user; break; + case 2: manifest_exec_level = manifest::exec_level_highest; break; + case 3: manifest_exec_level = manifest::exec_level_admin; break; + default: PRINTHELP(); + } + } + return PS_OK; #else //! NSIS_CONFIG_UNINSTALL_SUPPORT case TOK_WRITEUNINSTALLER: case TOK_UNINSTCAPTION: case TOK_UNINSTICON: case TOK_UNINSTTEXT: case TOK_UNINSTSUBCAPTION: + case TOK_REQUNINSTEXECLEVEL: ERROR_MSG(_T("Error: %") NPRIs _T(" specified, NSIS_CONFIG_UNINSTALL_SUPPORT not defined.\n"), line.gettoken_str(0)); return PS_ERROR; #endif diff --git a/Source/tokens.cpp b/Source/tokens.cpp index ff42c9eca8..8f2844ef84 100644 --- a/Source/tokens.cpp +++ b/Source/tokens.cpp @@ -265,6 +265,7 @@ static tokenType tokenlist[TOK__LAST] = {TOK_PESUBSYSVER,_T("PESubsysVer"),1,0,_T("major.minor"),TP_GLOBAL}, {TOK_XPSTYLE,_T("XPStyle"),1,0,_T("(on|off)"),TP_GLOBAL}, {TOK_REQEXECLEVEL,_T("RequestExecutionLevel"),1,0,_T("none|user|highest|admin"),TP_GLOBAL}, +{TOK_REQUNINSTEXECLEVEL,_T("RequestUninstallerExecutionLevel"),1,0,_T("none|user|highest|admin"),TP_GLOBAL}, {TOK_MANIFEST_APPENDCUSTOMSTRING,_T("ManifestAppendCustomString"),2,0,_T("path string"),TP_GLOBAL}, {TOK_MANIFEST_DPIAWARE,_T("ManifestDPIAware"),1,0,_T("notset|true|false"),TP_GLOBAL}, {TOK_MANIFEST_DPIAWARENESS,_T("ManifestDPIAwareness"),1,0,_T("comma_separated_string"),TP_GLOBAL}, diff --git a/Source/tokens.h b/Source/tokens.h index 954286ffb5..bfc91022d7 100644 --- a/Source/tokens.h +++ b/Source/tokens.h @@ -65,6 +65,7 @@ enum TOK_PESUBSYSVER, TOK_XPSTYLE, TOK_REQEXECLEVEL, + TOK_REQUNINSTEXECLEVEL, TOK_MANIFEST_APPENDCUSTOMSTRING, TOK_MANIFEST_DPIAWARE, TOK_MANIFEST_DPIAWARENESS,