]> granicus.if.org Git - python/commitdiff
Issue #20641: Run custom actions with the NoImpersonate flag to support UAC.
authorMartin v. Löwis <martin@v.loewis.de>
Sat, 22 Feb 2014 22:44:20 +0000 (23:44 +0100)
committerMartin v. Löwis <martin@v.loewis.de>
Sat, 22 Feb 2014 22:44:20 +0000 (23:44 +0100)
Misc/NEWS
Tools/msi/msi.py

index e4f7e9ac51da523c56a606e34b12576f1d4432b3..142a82aa6aeb905c0bad73b58afbb529f455d767 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -71,6 +71,9 @@ Library
 Build
 -----
 
+- Issue #20641: Run MSI custom actions (pip installation, pyc compilation)
+  with the NoImpersonate flag, to support elevated execution (UAC).
+
 - Issue #20221: Removed conflicting (or circular) hypot definition when
   compiled with VS 2010 or above.  Initial patch by Tabrez Mohammed.
 
index e816c8ac8a1abb1f26aa38af10337f6fe76b8c00..8409b81d17259f08330b61a7d05acbe3c69170df 100644 (file)
@@ -435,12 +435,13 @@ def add_ui(db):
         ("SetLauncherDirToWindows", 307, "LAUNCHERDIR", "[WindowsFolder]"),
         # msidbCustomActionTypeExe + msidbCustomActionTypeSourceFile
         # See "Custom Action Type 18"
-        ("CompilePyc", 18, "python.exe", compileargs),
-        ("CompilePyo", 18, "python.exe", "-O "+compileargs),
-        ("CompileGrammar", 18, "python.exe", lib2to3args),
         # msidbCustomActionTypeInScript (1024); run during actual installation
-        ("UpdatePip", 18+1024, "python.exe", updatepipargs),
-        ("RemovePip", 18, "python.exe", removepipargs),
+        # msidbCustomActionTypeNoImpersonate (2048); run action in system account, not user account
+        ("CompilePyc", 18+1024+2048, "python.exe", compileargs),
+        ("CompilePyo", 18+1024+2048, "python.exe", "-O "+compileargs),
+        ("CompileGrammar", 18+1024+2048, "python.exe", lib2to3args),
+        ("UpdatePip", 18+1024+2048, "python.exe", updatepipargs),
+        ("RemovePip", 18+1024+2048, "python.exe", removepipargs),
         ])
 
     # UI Sequences, see "InstallUISequence Table", "Using a Sequence Table"
@@ -483,17 +484,14 @@ def add_ui(db):
              # remove pip when state changes to INSTALLSTATE_ABSENT
              # run before RemoveFiles
              ("RemovePip", "&pip_feature=2", 3499),
-             ("CompilePyc", "COMPILEALL", 6800),
-             ("CompilePyo", "COMPILEALL", 6801),
-             ("CompileGrammar", "COMPILEALL", 6802),
+             ("CompilePyc", "COMPILEALL", 4002),
+             ("CompilePyo", "COMPILEALL", 4003),
+             ("CompileGrammar", "COMPILEALL", 4004),
             ])
     add_data(db, "AdminExecuteSequence",
             [("InitialTargetDir", 'TARGETDIR=""', 750),
              ("SetDLLDirToTarget", 'DLLDIR=""', 751),
              ("SetLauncherDirToTarget", 'LAUNCHERDIR=""', 752),
-             ("CompilePyc", "COMPILEALL", 6800),
-             ("CompilePyo", "COMPILEALL", 6801),
-             ("CompileGrammar", "COMPILEALL", 6802),
             ])
 
     #####################################################################