added highest option for RequestExecutionLevel

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@4812 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
kichik 2006-11-10 14:54:23 +00:00
parent 5f64570db1
commit 79a3b31431
5 changed files with 11 additions and 4 deletions

View file

@ -308,9 +308,9 @@ Specifies the output file that the MakeNSIS should write the installer to. This
\S2{requestexecutionlevel} RequestExecutionLevel
\c \\<b\\>none\\</b\\>|user|admin
\c \\<b\\>none\\</b\\>|user|highest|admin
Specifies the requested execution level for Windows Vista. The value is embedded in the installer and uninstaller's XML manifest and tells Vista, and probably future versions of Windows, what privileges level the installer requires. \e{user} requests the current's user level, be it normal user or administrator. \e{admin} requests administrator level and will cause Windows to prompt for the administrator password to verify privilege escalation. Specifying \e{none}, which is also the default, will keep the manifest empty and let Windows decide which execution level is required. Windows Vista automatically identifies NSIS installers and decides administrator privileges are required. Because of this, \e{none} and \e{admin} have virtually the same effect.
Specifies the requested execution level for Windows Vista. The value is embedded in the installer and uninstaller's XML manifest and tells Vista, and probably future versions of Windows, what privileges level the installer requires. \e{user} requests the a normal user's level with no administrative privileges. \e{highest} will request the highest execution level available for the current user and will cause Windows to prompt the user to verify privilege escalation. The prompt might request for the user's password. \e{admin} requests administrator level and will cause Windows to prompt the user as well. Specifying \e{none}, which is also the default, will keep the manifest empty and let Windows decide which execution level is required. Windows Vista automatically identifies NSIS installers and decides administrator privileges are required. Because of this, \e{none} and \e{admin} have virtually the same effect.
As Windows Vista is still in development, anything might change. It's recommended, at least by Microsoft, that every application will be marked with the required execution level. Installers that need not install anything into system folders or write to the local machine registry (HKLM) should specify \e{user} execution level.

View file

@ -46,6 +46,9 @@ string generate(comctl comctl_selection, exec_level exec_level_selection)
case exec_level_user:
level = "asInvoker";
break;
case exec_level_highest:
level = "highestAvailable";
break;
case exec_level_admin:
level = "requireAdministrator";
break;

View file

@ -31,6 +31,7 @@ namespace manifest
{
exec_level_none,
exec_level_user,
exec_level_highest,
exec_level_admin
};

View file

@ -2599,7 +2599,7 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
case TOK_REQEXECLEVEL:
{
int k=line.gettoken_enum(1,"none\0user\0admin\0");
int k=line.gettoken_enum(1,"none\0user\0highest\0admin\0");
switch (k)
{
case 0:
@ -2609,6 +2609,9 @@ int CEXEBuild::doCommand(int which_token, LineParser &line)
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:

View file

@ -235,7 +235,7 @@ static tokenType tokenlist[TOK__LAST] =
{TOK_WRITEREGEXPANDSTR,"WriteRegExpandStr",4,0,"rootkey subkey entry_name new_value_string\n root_key=(HKCR|HKLM|HKCU|HKU|HKCC|HKDD|HKPD|SHCTX)",TP_CODE},
{TOK_WRITEUNINSTALLER,"WriteUninstaller",1,0,"uninstall_exe_name",TP_CODE},
{TOK_XPSTYLE, "XPStyle",1,0,"(on|off)",TP_GLOBAL},
{TOK_REQEXECLEVEL, "RequestExecutionLevel",1,0,"none|user|admin",TP_GLOBAL},
{TOK_REQEXECLEVEL, "RequestExecutionLevel",1,0,"none|user|highest|admin",TP_GLOBAL},
{TOK_P_PACKEXEHEADER,"!packhdr",2,0,"temp_file_name command_line_to_compress_that_temp_file",TP_ALL},
{TOK_P_SYSTEMEXEC,"!system",1,2,"command [<|>|<>|=) retval]",TP_ALL},
{TOK_P_EXECUTE,"!execute",1,0,"command",TP_ALL},