summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2008-07-16 02:02:25 (GMT)
committerGeorg Brandl <georg@python.org>2008-07-16 02:02:25 (GMT)
commit26adf520f381c5902c82edbad1d341da6f03698d (patch)
tree4236a8c70b72cc00d3290e55a7142ee5222fb5d4
parent21967458f05ecfeb1e2ffd94b8495031dd7d3c0f (diff)
downloadcpython-26adf520f381c5902c82edbad1d341da6f03698d.zip
cpython-26adf520f381c5902c82edbad1d341da6f03698d.tar.gz
cpython-26adf520f381c5902c82edbad1d341da6f03698d.tar.bz2
Merged revisions 63828 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r63828 | mark.hammond | 2008-05-31 07:11:07 +0200 (Sat, 31 May 2008) | 2 lines Fix bdist_wininst --user-access-control for win2k ........
-rw-r--r--Lib/distutils/command/wininst-6.0.exebin61440 -> 61440 bytes
-rw-r--r--Lib/distutils/command/wininst-7.1.exebin61440 -> 65536 bytes
-rw-r--r--Lib/distutils/command/wininst-9.0-amd64.exebin77312 -> 77824 bytes
-rw-r--r--Lib/distutils/command/wininst-9.0.exebin66048 -> 66048 bytes
-rw-r--r--PC/bdist_wininst/install.c26
5 files changed, 19 insertions, 7 deletions
diff --git a/Lib/distutils/command/wininst-6.0.exe b/Lib/distutils/command/wininst-6.0.exe
index 10c9819..f57c855 100644
--- a/Lib/distutils/command/wininst-6.0.exe
+++ b/Lib/distutils/command/wininst-6.0.exe
Binary files differ
diff --git a/Lib/distutils/command/wininst-7.1.exe b/Lib/distutils/command/wininst-7.1.exe
index 6779aa8..1433bc1 100644
--- a/Lib/distutils/command/wininst-7.1.exe
+++ b/Lib/distutils/command/wininst-7.1.exe
Binary files differ
diff --git a/Lib/distutils/command/wininst-9.0-amd64.exe b/Lib/distutils/command/wininst-9.0-amd64.exe
index b4cb062..9dedfcd 100644
--- a/Lib/distutils/command/wininst-9.0-amd64.exe
+++ b/Lib/distutils/command/wininst-9.0-amd64.exe
Binary files differ
diff --git a/Lib/distutils/command/wininst-9.0.exe b/Lib/distutils/command/wininst-9.0.exe
index 0d04a66..9102ecd 100644
--- a/Lib/distutils/command/wininst-9.0.exe
+++ b/Lib/distutils/command/wininst-9.0.exe
Binary files differ
diff --git a/PC/bdist_wininst/install.c b/PC/bdist_wininst/install.c
index 252f4ec..38e6c3a 100644
--- a/PC/bdist_wininst/install.c
+++ b/PC/bdist_wininst/install.c
@@ -2115,11 +2115,6 @@ BOOL NeedAutoUAC()
{
HKEY hk;
char key_name[80];
- OSVERSIONINFO winverinfo;
- winverinfo.dwOSVersionInfoSize = sizeof(winverinfo);
- // If less than XP, then we can't do it (and its not necessary).
- if (!GetVersionEx(&winverinfo) || winverinfo.dwMajorVersion < 5)
- return FALSE;
// no Python version info == we can't know yet.
if (target_version[0] == '\0')
return FALSE;
@@ -2135,6 +2130,23 @@ BOOL NeedAutoUAC()
return TRUE;
}
+// Returns TRUE if the platform supports UAC.
+BOOL PlatformSupportsUAC()
+{
+ // Note that win2k does seem to support ShellExecute with 'runas',
+ // but does *not* support IsUserAnAdmin - so we just pretend things
+ // only work on XP and later.
+ BOOL bIsWindowsXPorLater;
+ OSVERSIONINFO winverinfo;
+ winverinfo.dwOSVersionInfoSize = sizeof(winverinfo);
+ if (!GetVersionEx(&winverinfo))
+ return FALSE; // something bad has gone wrong
+ bIsWindowsXPorLater =
+ ( (winverinfo.dwMajorVersion > 5) ||
+ ( (winverinfo.dwMajorVersion == 5) && (winverinfo.dwMinorVersion >= 1) ));
+ return bIsWindowsXPorLater;
+}
+
// Spawn ourself as an elevated application. On failure, a message is
// displayed to the user - but this app will always terminate, even
// on error.
@@ -2190,7 +2202,7 @@ int DoInstall(void)
// See if we need to do the Vista UAC magic.
if (strcmp(user_access_control, "force")==0) {
- if (!MyIsUserAnAdmin()) {
+ if (PlatformSupportsUAC() && !MyIsUserAnAdmin()) {
SpawnUAC();
return 0;
}
@@ -2198,7 +2210,7 @@ int DoInstall(void)
} else if (strcmp(user_access_control, "auto")==0) {
// Check if it looks like we need UAC control, based
// on how Python itself was installed.
- if (!MyIsUserAnAdmin() && NeedAutoUAC()) {
+ if (PlatformSupportsUAC() && !MyIsUserAnAdmin() && NeedAutoUAC()) {
SpawnUAC();
return 0;
}