[Python-checkins] python/nondist/sandbox/msi msi.py, 1.26, 1.27 msilib.py, 1.10, 1.11

loewis at users.sourceforge.net loewis at users.sourceforge.net
Fri Aug 13 17:25:31 CEST 2004


Update of /cvsroot/python/python/nondist/sandbox/msi
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16471
Modified Files:
	msi.py msilib.py 
Log Message:
Add support for advertised shortcuts and extensions
Index: msi.py
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/msi/msi.py,v
retrieving revision 1.26
retrieving revision 1.27
diff -C2 -d -r1.26 -r1.27
*** msi.py	5 Aug 2004 20:29:05 -0000	1.26
--- msi.py	13 Aug 2004 15:25:28 -0000	1.27
***************
*** 281,284 ****
--- 281,286 ----
 
 # Bitmaps
+ if not os.path.exists(srcdir+r"\PC\python_icon.exe"):
+ raise "Run icons.mak in PC directory"
 add_data(db, "Binary",
 [("PythonWin", msilib.Binary(srcdir+r"\PCbuild\installer.bmp")), # 152x328 pixels
***************
*** 287,290 ****
--- 289,295 ----
 ("py.ico",msilib.Binary(srcdir+r"\PC\py.ico")),
 ])
+ add_data(db, "Icon",
+ [("python_icon.exe", msilib.Binary(srcdir+r"\PC\python_icon.exe"))])
+ 
 # Scripts
 open("inst.vbs","w").write("""
***************
*** 681,685 ****
 # column.
 def add_features(db):
! global default_feature, tcltk, htmlfiles, tools, testsuite, ext_feature
 default_feature = Feature(db, "DefaultFeature", "Python",
 "Python Interpreter and Libraries",
--- 686,690 ----
 # column.
 def add_features(db):
! global default_feature, tcltk, idle, htmlfiles, tools, testsuite, ext_feature
 default_feature = Feature(db, "DefaultFeature", "Python",
 "Python Interpreter and Libraries",
***************
*** 688,693 ****
 "Make this Python installation the default Python installation", 3,
 parent = default_feature)
! tcltk = Feature(db, "TclTk", "Tcl/Tk", "Tkinter, IDLE, pydoc", 5,
 parent = default_feature)
 htmlfiles = Feature(db, "Documentation", "Documentation",
 "Python HTMLHelp File", 7, parent = default_feature)
--- 693,700 ----
 "Make this Python installation the default Python installation", 3,
 parent = default_feature)
! tcltk = Feature(db, "TclTk", "Tcl/Tk", "Tkinter, pydoc", 5,
 parent = default_feature)
+ idle = Feature(db, "IDLE", "IDLE", "IDLE (Python GUI)", 6,
+ parent = tcltk)
 htmlfiles = Feature(db, "Documentation", "Documentation",
 "Python HTMLHelp File", 7, parent = default_feature)
***************
*** 768,773 ****
 if dir == "CVS" or dir.startswith("plat-"):
 continue
! elif dir in ["lib-tk", "idlelib", "Icons"]:
 tcltk.set_current()
 elif dir in ['test', 'output']:
 testsuite.set_current()
--- 775,782 ----
 if dir == "CVS" or dir.startswith("plat-"):
 continue
! elif dir in ["lib-tk"]:
 tcltk.set_current()
+ elif dir in ["idlelib", "Icons"]:
+ idle.set_current()
 elif dir in ['test', 'output']:
 testsuite.set_current()
***************
*** 775,778 ****
--- 784,791 ----
 default_feature.set_current()
 lib = Directory(db, cab, parent, dir, dir, "%s|%s" % (parent.make_short(dir), dir))
+ # Register keyfiles for components which need them
+ if dir=="idlelib":
+ lib.start_component("idlelib", keyfile="idle.pyw")
+ # Add additional files
 dirs[dir]=lib
 lib.glob("*.txt")
***************
*** 874,878 ****
 lib = Directory(db, cab, tooldir, f, f, "%s|%s" % (tooldir.make_short(f), f))
 lib.glob("*.py")
! lib.glob("*.pyw")
 lib.remove_pyc()
 lib.glob("*.txt")
--- 887,891 ----
 lib = Directory(db, cab, tooldir, f, f, "%s|%s" % (tooldir.make_short(f), f))
 lib.glob("*.py")
! lib.glob("*.pyw", exclude=['pydocgui.pyw'])
 lib.remove_pyc()
 lib.glob("*.txt")
***************
*** 882,888 ****
--- 895,904 ----
 if f == 'Scripts':
 lib.add_file("README.txt", src="README")
+ lib.start_component("pydocgui.pyw", tcltk, keyfile="pydocgui.pyw")
+ lib.add_file("pydocgui.pyw")
 # Add documentation
 htmlfiles.set_current()
 lib = Directory(db, cab, root, "Doc", "Doc", "DOC|Doc")
+ lib.start_component("documentation", keyfile="Python%s%s.chm" % (major,minor))
 lib.add_file("Python%s%s.chm" % (major, minor))
 
***************
*** 903,907 ****
 "InstallPath"),
 ("REGISTRY.def", msilib.gen_uuid(), "TARGETDIR", 4,
! None, "py.ext"),
 ("REGISTRY.tcl", msilib.gen_uuid(), "TARGETDIR", 4,
 "&%s <> 2" % ext_feature.id, "py.IDLE")])
--- 919,923 ----
 "InstallPath"),
 ("REGISTRY.def", msilib.gen_uuid(), "TARGETDIR", 4,
! None, None),
 ("REGISTRY.tcl", msilib.gen_uuid(), "TARGETDIR", 4,
 "&%s <> 2" % ext_feature.id, "py.IDLE")])
***************
*** 916,941 ****
 pat2 = r"Software\Classes\%sPython.%sFile\DefaultIcon"
 pat3 = r"Software\Classes\%sPython.%sFile"
 add_data(db, "Registry",
! [# Extensions
! ("py.ext", -1, r"Software\Classes\."+ext, "",
! "Python.File", "REGISTRY.def"),
! ("pyw.ext", -1, r"Software\Classes\."+ext+'w', "",
! "Python.NoConFile", "REGISTRY.def"),
! ("pyc.ext", -1, r"Software\Classes\."+ext+'c', "",
! "Python.CompiledFile", "REGISTRY.def"),
! ("pyo.ext", -1, r"Software\Classes\."+ext+'o', "",
! "Python.CompiledFile", "REGISTRY.def"),
! # MIME types
! ("py.mime", -1, r"Software\Classes\."+ext, "Content Type",
! "text/plain", "REGISTRY.def"),
! ("pyw.mime", -1, r"Software\Classes\."+ext+'w', "Content Type",
! "text/plain", "REGISTRY.def"),
! #Verbs
! ("py.open", -1, pat % (testprefix, "", "open"), "",
! r'"[TARGETDIR]python.exe" "%1" %*', "REGISTRY.def"),
! ("pyw.open", -1, pat % (testprefix, "NoCon", "open"), "",
! r'"[TARGETDIR]pythonw.exe" "%1" %*', "REGISTRY.def"),
! ("pyc.open", -1, pat % (testprefix, "Compiled", "open"), "",
! r'"[TARGETDIR]python.exe" "%1" %*', "REGISTRY.def"),
 ("py.IDLE", -1, pat % (testprefix, "", ewi), "",
 r'"[TARGETDIR]pythonw.exe" "[TARGETDIR]Lib\idlelib\idle.pyw" -n -e "%1"',
--- 932,957 ----
 pat2 = r"Software\Classes\%sPython.%sFile\DefaultIcon"
 pat3 = r"Software\Classes\%sPython.%sFile"
+ # Advertised extensions
+ add_data(db, "Extension",
+ [("py", "python.exe", "Python.File", None, default_feature.id),
+ ("pyw", "pythonw.exe", "Python.NoConFile", None, default_feature.id),
+ ("pyc", "python.exe", "Python.CompiledFile", None, default_feature.id),
+ ("pyo", "python.exe", "Python.CompiledFile", None, default_feature.id)])
+ # add_data(db, "MIME") XXX
+ add_data(db, "Verb",
+ [("py", "open", 1, None, r'-n -e "%1"'),
+ ("pyw", "open", 1, None, r'-n -e "%1"'),
+ ("pyc", "open", 1, None, r'-n -e "%1"'),
+ ("pyo", "open", 1, None, r'-n -e "%1"')])
+ add_data(db, "ProgId",
+ [("Python.File", None, None, "Python File", "python_icon.exe", 0),
+ ("Python.NoConFile", None, None, "Python File (no console)", "python_icon.exe", 0),
+ ("Python.CompiledFile", None, None, "Compiled Python File", "python_icon.exe", 1)])
+ 
+ # Non-advertised verbs: for advertised verbs, we would need to invoke the same
+ # executable for both open and "Edit with IDLE". This cannot work, as we want
+ # to use pythonw.exe in either case
 add_data(db, "Registry",
! [#Verbs
 ("py.IDLE", -1, pat % (testprefix, "", ewi), "",
 r'"[TARGETDIR]pythonw.exe" "[TARGETDIR]Lib\idlelib\idle.pyw" -n -e "%1"',
***************
*** 944,961 ****
 r'"[TARGETDIR]pythonw.exe" "[TARGETDIR]Lib\idlelib\idle.pyw" -n -e "%1"',
 "REGISTRY.tcl"),
- #Icons
- ("py.icon", -1, pat2 % (testprefix, ""), "",
- r'[TARGETDIR]py.ico', "REGISTRY.def"),
- ("pyw.icon", -1, pat2 % (testprefix, "NoCon"), "",
- r'[TARGETDIR]py.ico', "REGISTRY.def"),
- ("pyc.icon", -1, pat2 % (testprefix, "Compiled"), "",
- r'[TARGETDIR]pyc.ico', "REGISTRY.def"),
- # Descriptions
- ("py.txt", -1, pat3 % (testprefix, ""), "",
- "Python File", "REGISTRY.def"),
- ("pyw.txt", -1, pat3 % (testprefix, "NoCon"), "",
- "Python File (no console)", "REGISTRY.def"),
- ("pyc.txt", -1, pat3 % (testprefix, "Compiled"), "",
- "Compiled Python File", "REGISTRY.def"),
 ])
 
--- 960,963 ----
***************
*** 982,1011 ****
 add_data(db, "Shortcut",
 [# Advertised shortcuts: targets are features, not files
! # The key file of the component is then entered as the real target
! 	 # XXX, advertised shortcuts don't work, so make them unadvertised
! 	 # for now
! #("IDLE", "MenuDir", "IDLE|IDLE (Python GUI)", "pythonw.exe",
! # tcltk.id, r"[TARGETDIR]Lib\idlelib\idle.pyw",
! # None, None, None, "py.ico", None, "TARGETDIR"),
! #("PyDoc", "MenuDir", "MODDOCS|Module Docs", "pythonw.exe",
! # default_feature.id, r"[TARGETDIR]Tools\scripts\pydocgui.pyw",
! # None, None, None, "py.ico", None, "TARGETDIR"),
! #("Python", "MenuDir", "PYTHON|Python (command line)", "python.exe",
! # default_feature.id, None,
! # None, None, None, "py.ico", None, "TARGETDIR"),
! ("IDLE", "MenuDir", "IDLE|IDLE (Python GUI)", "REGISTRY",
! r"[TARGETDIR]pythonw.exe", r"[TARGETDIR]Lib\idlelib\idle.pyw",
! None, None, None, None, None, "TARGETDIR"),
! ("PyDoc", "MenuDir", "MODDOCS|Module Docs", "REGISTRY",
! r"[TARGETDIR]pythonw.exe", r"[TARGETDIR]Tools\scripts\pydocgui.pyw",
! None, None, None, None, None, "TARGETDIR"),
! ("Python", "MenuDir", "PYTHON|Python (command line)", "REGISTRY",
! r"[TARGETDIR]python.exe", None,
! None, None, None, None, None, "TARGETDIR"),
! 
! ## Non-advertised features: must be associated with a registry component
! ("Manual", "MenuDir", "MANUAL|Python Manuals", "REGISTRY",
! r"[TARGETDIR]Doc\python%s%s.chm" % (major, minor), None,
! None, None, None, None, None, None),
 ("Uninstall", "MenuDir", "UNINST|Uninstall Python", "REGISTRY",
 SystemFolderName+"msiexec", "/x%s" % product_code,
--- 984,996 ----
 add_data(db, "Shortcut",
 [# Advertised shortcuts: targets are features, not files
! ("IDLE", "MenuDir", "IDLE|IDLE (Python GUI)", "pythonw.exe",
! idle.id, r"[TARGETDIR]Lib\idlelib\idle.pyw", None, None, "python_icon.exe", 0, None, "TARGETDIR"),
! ("PyDoc", "MenuDir", "MODDOCS|Module Docs", "pythonw.exe",
! tcltk.id, r"[TARGETDIR]Tools\scripts\pydocgui.pyw", None, None, "python_icon.exe", 0, None, "TARGETDIR"),
! ("Python", "MenuDir", "PYTHON|Python (command line)", "python.exe",
! default_feature.id, None, None, None, "python_icon.exe", 2, None, "TARGETDIR"),
! ("Manual", "MenuDir", "MANUAL|Python Manuals", "documentation",
! htmlfiles.id, None, None, None, None, None, None, None),
! ## Non-advertised shortcuts: must be associated with a registry component
 ("Uninstall", "MenuDir", "UNINST|Uninstall Python", "REGISTRY",
 SystemFolderName+"msiexec", "/x%s" % product_code,
Index: msilib.py
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/msi/msilib.py,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -d -r1.10 -r1.11
*** msilib.py	1 Aug 2004 22:14:19 -0000	1.10
--- msilib.py	13 Aug 2004 15:25:28 -0000	1.11
***************
*** 430,435 ****
 add_data(db, "Directory", [(logical, blogical, default)])
 
! def start_component(self, component, feature = None, flags = 0, keyfile = None):
 uuid = gen_uuid()
 self.component = component
 if Win64:
--- 430,437 ----
 add_data(db, "Directory", [(logical, blogical, default)])
 
! def start_component(self, component = None, feature = None, flags = 0, keyfile = None):
 uuid = gen_uuid()
+ if component is None:
+ component = self.logical
 self.component = component
 if Win64:
***************
*** 522,528 ****
 # self.logical, 2)])
 
! def glob(self, pattern):
 files = glob.glob1(self.absolute, pattern)
 for f in files:
 self.add_file(f)
 return files
--- 524,531 ----
 # self.logical, 2)])
 
! def glob(self, pattern, exclude = None):
 files = glob.glob1(self.absolute, pattern)
 for f in files:
+ if exclude and f in exclude: continue
 self.add_file(f)
 return files


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /