Message71185
Martin, at the time I read the python-list thread, I didn't pay any
attention to the posts' authors. Only now did I realize you were one
of the posters. Oops.
I already know the basic ideas about creating MSIs with Wise from a
past job. So now I researched and thought about this particular
problem for several hours. I've learned that Windows Installer is able
to add ...\python and ...\python\scripts to the PATH during
installation. It cannot[1] remove them at uninstallation. [ WiX, and
its superior competitor MAKEMSI, each provide slightly higher-level
abstractions[2][3] on top of what Windows Installer provides[4] to make
this slightly easier, but not by that much. But I will assume you
don't plan to spend days or weeks of your spare time on migrating away
from msilib. :-) ]
Here are the rough notes I've made up so far on how to do this:
- make a new method add_environment. In it:
- call start_component to create components "modify_path_per_user"
and "modify_path_per_machine"
- call add_data to create an Environment table. It should have
two rows[5]:
- Name:"=PATH" Value:"[TARGETDIR];[TARGETDIR]\Scripts;[~]"
Component:"modify_path_per_user"
- Name:"=*PATH" Value:"[TARGETDIR];[TARGETDIR]\Scripts;[~]"
Component:"modify_path_per_machine"
Another difficult part is the UI. Then there's the issue of switching
which of the two components are installed based on whether it's per-
user or per-machine and also based on whether the user specifies via
the UI that they want their PATH changed. I have to think more about
that, and I'm already tired of researching.
Remember that Windows Installer cannot undo its PATH changes at
uninstall time. So, before I consider proceeding further, let me
verify a few things with you.
1. [TARGETDIR] will stay on the path. I think that is fine, since the
python.exe will be gone, so will never be executed. Do you agree?
2. [TARGETDIR]\scripts will also stay on the path. And it may still
contain scripts installed by the user or by third-party installers like
the SCons installer. I don't know enough about how Python works to
know if that's a problem. Is it a problem?
P.S. Would you prefer to discuss this by something more synchronous
like telephone (I will pay the tolls) or instant messaging?
P.P.S. Now that I have realized how complicated Python installation
actually is, and how hard it is to design the tables of and write
raw .MSI files, I have a new appreciation for the work you've done on
making a Python MSI installer. Thank you very much for having done
so. Also, now that I have started researching how much work is
necessary to get this done, I realize why you don't want to code it
yourself. :-)
I don't know if I will end up actually managing to come up with a patch.
^ [1]. I have inferred this fact based on
http://www.isg.ee.ethz.ch/tools/realmen/det/msi.en.html -- scroll down
to the "Setting the PATH" section
^ [2]. http://blogs.technet.com/alexshev/archive/2008/03/28/from-msi-
to-wix-part-13-installable-items-environment-variable.aspx
^ [3]. http://makemsi-manual.dennisbareis.com/path.htm
^ [4]. http://msdn.microsoft.com/en-us/library/aa368369(printer).aspx
^ [5]. Search inside the page http://msdn.microsoft.com/en-
us/library/aa368369(printer).aspx for "If the package can be installed
per-user or per-machine" to see why you need two rows. |
|
Date |
User |
Action |
Args |
2008-08-15 21:22:05 | jasonspiro | set | recipients:
+ jasonspiro, loewis, christian.heimes |
2008-08-15 21:22:05 | jasonspiro | set | messageid: <1218835325.62.0.471571056897.issue3561@psf.upfronthosting.co.za> |
2008-08-15 21:22:04 | jasonspiro | link | issue3561 messages |
2008-08-15 21:22:02 | jasonspiro | create | |
|