diff --git a/Lib/shutil.py b/Lib/shutil.py
index d884d0a..7a84646 100644
--- a/Lib/shutil.py
+++ b/Lib/shutil.py
@@ -256,7 +256,7 @@
         os.rename(src, real_dst)
     except OSError:
         if os.path.isdir(src):
-            if destinsrc(src, dst):
+            if _destinsrc(src, dst):
                 raise Error("Cannot move a directory '%s' into itself '%s'." % (src, dst))
             copytree(src, real_dst, symlinks=True)
             rmtree(src)
@@ -264,7 +264,7 @@
             copy2(src, real_dst)
             os.unlink(src)
 
-def destinsrc(src, dst):
+def _destinsrc(src, dst):
     src = abspath(src)
     dst = abspath(dst)
     if not src.endswith(os.path.sep):
diff --git a/Lib/test/test_shutil.py b/Lib/test/test_shutil.py
index c7dd1b3..86c7b64 100644
--- a/Lib/test/test_shutil.py
+++ b/Lib/test/test_shutil.py
@@ -346,8 +346,8 @@
             for src, dst in [('srcdir', 'srcdir/dest')]:
                 src = os.path.join(TESTFN, src)
                 dst = os.path.join(TESTFN, dst)
-                self.assert_(shutil.destinsrc(src, dst),
-                             msg='destinsrc() wrongly concluded that '
+                self.assert_(shutil._destinsrc(src, dst),
+                             msg='_destinsrc() wrongly concluded that '
                              'dst (%s) is not in src (%s)' % (dst, src))
         finally:
             shutil.rmtree(TESTFN, ignore_errors=True)
@@ -358,8 +358,8 @@
             for src, dst in [('srcdir', 'src/dest'), ('srcdir', 'srcdir.new')]:
                 src = os.path.join(TESTFN, src)
                 dst = os.path.join(TESTFN, dst)
-                self.failIf(shutil.destinsrc(src, dst),
-                            msg='destinsrc() wrongly concluded that '
+                self.failIf(shutil._destinsrc(src, dst),
+                            msg='_destinsrc() wrongly concluded that '
                             'dst (%s) is in src (%s)' % (dst, src))
         finally:
             shutil.rmtree(TESTFN, ignore_errors=True)
diff --git a/PCbuild/build_tkinter.py b/PCbuild/build_tkinter.py
index 21e89cc..2d5797f 100644
--- a/PCbuild/build_tkinter.py
+++ b/PCbuild/build_tkinter.py
@@ -52,18 +52,18 @@
     if 1:
         os.chdir(os.path.join(ROOT, TK, "win"))
         if clean:
-            nmake("makefile.vc", "clean", TCLDIR=tcldir)
-        nmake("makefile.vc", TCLDIR=tcldir, MACHINE=machine)
-        nmake("makefile.vc", "install", TCLDIR=tcldir, INSTALLDIR=dest, MACHINE=machine)
+            nmake("makefile.vc", "clean", DEBUG=0, TCLDIR=tcldir)
+        nmake("makefile.vc", DEBUG=0, MACHINE=machine)
+        nmake("makefile.vc", "install", DEBUG=0, INSTALLDIR=dest, MACHINE=machine)
 
     # TIX
     if 1:
         # python9.mak is available at http://svn.python.org
         os.chdir(os.path.join(ROOT, TIX, "win"))
         if clean:
-            nmake("python9.mak", "clean")
-        nmake("python9.mak", MACHINE=machine, INSTALL_DIR=dest)
-        nmake("python9.mak", "install", INSTALL_DIR=dest)
+            nmake("python.mak", "clean")
+        nmake("python.mak", MACHINE=machine, INSTALL_DIR=dest)
+        nmake("python.mak", "install", INSTALL_DIR=dest)
 
 def main():
     if len(sys.argv) < 2 or sys.argv[1] not in ("Win32", "AMD64"):
diff --git a/Tools/msi/merge.py b/Tools/msi/merge.py
index 959978b..def3964 100644
--- a/Tools/msi/merge.py
+++ b/Tools/msi/merge.py
@@ -1,5 +1,6 @@
 import msilib,os,win32com,tempfile,sys
 PCBUILD="PCBuild"
+certname = None
 from config import *
 
 Win64 = "amd64" in PCBUILD
@@ -76,3 +77,8 @@
     db.Commit()
 
 merge(msi, "SharedCRT", "TARGETDIR", modules)
+
+# certname (from config.py) should be (a substring of)
+# the certificate subject, e.g. "Python Software Foundation"
+if certname:
+    os.system('signtool sign /n "%s" /t http://timestamp.verisign.com/scripts/timestamp.dll %s' % (certname, msi))
