summary of the preceding choices. No idea if this is "the right way" to
do it, but it's exactly painful enough to make me suspect it's the only
way <wink>.
delete the Tools and Lib directories at uninstall time. However,
under the old version of Wise, they didn't actually do anything. Under
the new version, they work as advertised, and even delete files users
added.
Got rid of those, and replaced them with similar uninstall cmds that
get rid of all .pyc and .pyo files (whether or not the installer created
them). This works nicely! It still tears down the directory structure,
except for those directories needed to get to any non-.pyc/o file(s) the
user may have added.
turns out the canned new "backup directory" dialog put its "back" and
"next" buttons at a different relative horizontal position than all the
other canned dialogs. This explains why you had to keep moving the
mouse around if you wanted to do a straight all-default install -- the
Next button kept moving around. Now the back/next buttons are in exactly
the same place on all dialogs, and you can click straight thru to the end.
about installing into a pre-existing directory *unless* you hit the
Browse button first. At least while testing, this screwed me repeatedly.
Plus I really liked the Inno Setup scheme of giving you a list box in
its "select directory" dialog without needing a distinct browse button
to ask for that.
So I redid this dialog from scratch: now gives a list box at once, the
browse button is gone, it asks for confirmation if the directory already
exists, and, since this is the first dialog in the set now, also removed
its "Back" button.
GUI inserting those once before shortly after I started using it, but
don't know what triggers it -- presumably something in the "expert" view
(which is, suitably enough, unsuited to experts <wink>).
plain unprivileged User acct:
+ Had to duplicate Wise's Uninstal.wse script, in order to change the line
at its end that unconditionally tries to write uninstall info under HKLM.
This is our new file Uninstal.wse, which must be included by python20.wse
instead of using Wise's version.
+ In every other case we write to HKLM, also write to HKCU instead (we
were already doing that in *most* places, but not quite all).
+ If the user doesn't have admin privs, the DLLs we usually write to the
system dir are written to the root of the Python installation instead.
That's python22.dll, plus the two MSVC runtime DLLs.
+ Added a new component "Register file extensions". Registering .py etc
is done under HKEY_CLASSES_ROOT, and that also requires admin privs;
i.e., AFAICT it's impossible for an unprivileged user to accomplish this.
In the component selection dialog, if the user doesn't have admin privs
I gray out this new component so the user knows they aren't getting file
extensions.
After all that, Python installs, the Start Menu entries are OK, it runs
its test suite to completion, and the uninstaller works too. Only known
problem so far is that the integration with Win2K's Add/Remove subsystem
isn't quite right yet in this irritating case.
1. Only .py files were getting installed.
2. Empty CVS directories were getting created.
Both were due to trying to get away with "recursively copy *.py" one-
liner scripting.
Got rid of useless "Welcome" screen.
Folded Tcl/Tk into the main Python component.
Bug introduced during upgrade: Start Menu entries didn't work if
installation was to a path with an embedded space, because the
enclosing quotes somehow got dropped on the cmdline args. Repaired.
Years of wizard-generated code blocks left this script hard to read.
Added many more comments, blank lines, and rearranged related code
into related blocks where they had drifted apart.
Added %_PYMAJOR_% and %_PYMINOR_% compiler vrbls, and reworked script
items to use them as appropriate. This should slash the amount of
hand-fiddling needed when version numbers change. Indeed, in the
body of the script, only the first line should need changing now.
Deleted unreferenced wizard-generated compiler vrbls.
"relative paths" option is enabled, 8.1 rewrites *every* path to be
relative to PCbuild (the dir containing the .wse script), even absolute
paths you type in by hand, paths to the Wise installation itself, and even
paths to the Windows directories (sheesh). Only way to stop it is to
start a path with a variable reference, and we screwed ourselves before
by not using the predefined %_WISE_% vrbl to point to the Wise
installation. Repaired that old, repeated and well-hidden mistake.
Also:
+ Got rid of the %_SRC_% vrbl (such paths always relative to PCBuild now).
+ Changed the %_DOC_% vrbl to prompt for the location of the unzipped
HTML files (defaults to ..\html, cuz that's where I put them, but I
expect I'll change that later cuz I always hated mixing the generated
docs into the CVS tree ... Guido, if you're reading this, where did you
unpack the docs when building a Windows installer? Happy to oblige.).
+ Stopped the generated installer from filling up the entire screen (got
rid of the massive blue background gradient -- new option).
+ Added the helpful app publisher and app URL registry entries that Win2K
displays in its version of Add/Remove.
the old script without any complaints, didn't demand any manual changes,
and built a working installer from it that acts very much like the old one.
It did add a few script items, and changed one, so checking it in now
before I break everything again.
As the bug report notes, the Windows installer creates a useless pydoc
file in the base directory. Changed the installer to rename it pydoc.pyw
instead.
This involves changing the zlib build process to build zlib itself from sources, then use that library. Also updated are the comments to reflect the new official home of zlib, and add Windows specific notes regarding the build process.
between passes: Win9x DOS boxes are limited to 50 lines max, and the result
of the first pass scrolls off irretrievably otherwise. Also simplified
the goto-laden logic a bit.
+ Bump the build number.
+ Changed app name in installer dialogs.
+ Fiddled dialogs to repair grammar and get rid of anachronisms (e.g.,
"ProgMan" and "Program Manager" haven't made sense since Windows 3.1!).
subset of Win32 ShellExecute's functionality. Guido wants this because
IDLE's Help -> Docs function currently crashes his machine because of a
conflict between his version of Norton AntiVirus (6.10.20) and MS's
_popen. Docs for startfile are being mailed to Fred (or just read the
docstring -- it tells the whole story).
Changed webbrowser.py to use os.startfile instead of os.popen on Windows.
Changed IDLE's EditorWindow.py to pass an absolute path for the docs
(hardcoding ShellExecute's "directory" arg to "." as used to be done let
IDLE work, but made the startfile command exceedingly obscure for other
uses -- the MS docs are terrible, of course, & still not sure I
understand it).
Note that Windows Python must link with shell32.lib now! That's where
ShellExecute lives.
pythonw.exe we just installed. Making Windows key off the .pyw extension
instead screws people with multiple Python installations (reported more
than once on c.l.py).
.exe that will show up on PythonLabs.com later today:
Include the Lib\xml\ package (directory + subdirectories).
Include the Lib\lib-old\ directory.
Include the Lib\test\*.xml test cases (well, just one now).
Remove the redundant install of Lib\*.py (looks like a stray duplicate
line that's been there a long time). Because of this, the new
installer is a little smaller despite having more stuff in it.
waste an hour tracking down an illusion; repaired it; writing/reading non-
printable characters (except \t\r\n) into/outof text-mode files ain't
defined x-platform, and at least some Windows text editors do surprising
things in their presence.
Also added a by-hand "build humber" to the Windows build, in an approximation
of Python's inexplicable BUILD-number Unix scheme. I'll try to remember to
increment it each time I make a Windows installer available. It's starting
at 2, cuz I've put 2 installers out so far (both with BUILD #0).
very late in the process when running on Windows 2000 without admim
privs. Rearranged so that the admin check is done at the start
instead. Added words to the end of the blurb to make it very clear
how to abort the install (wasn't obvious to me that "Cancel" was
the right thing to click).
much more explicit. Also document that we're moving to Tcl/Tk 8.3.2.
Simplify .dsp files by getting rid of useless include paths.
.wse file changed to reflect that my setup is different than Guido's:
if you *build* a Python distro using python20.wse, beware!
that these files are treated as normal text files (which they are). However,
the files also had to be changed to be stored in CVS internally with UNIX line
terminators (they had DOS line terminators internally before this commit).
NOTE: All these projects had messed-up line endings (but MSVC didnt mind). Executing a diff with "--ignore-all-space" will show the specific changes, but I made a complete checkin with correct line endiings as it is the correct thing to do!
what the dozen+ subprojects are for, which are and aren't
expected to build out of the box, and what else is needed to get
them all to build. Also explained that Alpha configurations
don't refer to pre-beta, but to the Alpha processor! That's
baffled me for years <0.7 wink>.
- The Tcl minor version should be 3 -- we're now using 8.3.1.
- Remove the version number from yet another Tcl source file.
Note that Tcl should be installed in C:\src\tcl for this to work.
project. [However I didn't add the other changes in his patch, which
were just taking away the source code control stuff -- this doesn't
hurt and would come back as soon as I make another change. --GvR]
* Temp directory for all projects are now specific to the project
(rather than common as before). This avoids any conflicts with
debug symbols or common file names etc.
NOTE: You should manually delete your existing build directory after
applying this patch, as the MSVC "clean" command will now only clean
the new temporary directories - not the existing common temp
directory.
* Base address for all extension modules updated. PC\dllbase_nt.txt
also updated. Erroneous "libpath" directory removed for all
projects.
* winsound module moved from a builtin module to an extension
module. This was done primarily to avoid Python16.dll needing to
pull in winmm.dll. Really dumb test added for winsound - but if
nothing else it ensures the module imports.
reduce the size of python16.dll to almost its 1.5.2 size, and remove
dependencies on winsock unless sockets are actually used.
Note that soundex is simply no longer supported.
Added the bitmaps back, and added the wizard style program group
selection dialog.
Got rid of references to backup etc. inserted by the installer wizard
-- we don't use these.
Got rid of conditionals for Windows 3.1, ditto.
Changed version to 1.6a2.
Changed default install directory to "C:\Python16" (not really, but close).
Install only one copy of python16.lib.
Install the two MS DLLs (versioned) and python16.dll (unversioned) in
the system directory.
Install Tcl/Tk and expat in the DLLs directory.