every installer consumer? Still hoping to figure out a way to ask
install4j to clean up after itself.
Tom, yeh that’s the tough one and quickly leads down the rabbit hole.
FWIW, I’m revamping the Inno-based installer for
http://rubyinstaller.org and have just pushed out test installers and
the code to implement what I call “nano system restore” for the key
areas of the registry that the installer mucks with. Specifically,
PATH, PATHEXT, and the .RB/.RBW file associations. In a nutshell, the
nano system restore code takes a snapshot of certain parts of the system
before installation, caching relevant values in the registry. Upon
uninstall it restores from the cache in order to bring the system back
to the original state. The caches are namespaced in the registry so
that one can install multiple versions and not have the snapshot/restore
code make a mess of things.
This all sounds too good to be true I know, and we’re trying to run the
code through the gauntlet to confirm that it works and it doesn’t try to
do more than it needs to. I’d appreciate more eyes looking over code,
and it would be great if any of it could help with your efforts.
The code is MIT licensed at
http://github.com/jonforums/rubyinstaller/tree/installer/resources/installer/
if you’d like to look it over. I’ve also made test installers available
at File sharing and storage made simple that you can run through a bunch
of weird scenarios (hopefully in a VM) to see how well it plays with
pre-existing systems. The “fake installers” only install a few
placeholder files, add some Start Menu links, and setup things for clean
uninstalls.
The key files to look at are “rubyinstaller-fake.iss” (starting at line
151) and “util.iss” which does the heavy lifting.
The key downside is that the code is in Delphi/Pascal (ugh!!) which I
learned along the way…so I’m sure it’s highly Delphi idiomatic.
However, it should be easy to port to whatever install4j uses, but I
still don’t envy anyone using that language.
If you do find any of it useful, the only thing I ask is that you let me
know where the code falls down and what you think needs to be fixed in
order to be more bullet proof.
Installer’s really are the Root of All Evil until they prove themselves
otherwise >;->
I am trying to figure out how the product manages these things, but I
am not well versed in windows and working with registry keys so I am
not sure how much time I can spend on this. Part of the decision to
use install4j is that it seemed like a product which should just do
the right things. The uninstall in HKLM and the PATH in HKCU seems
wrong, but the path in HKCU is largely one check box (‘User
Specific’). The fact that the uninstall info gets put into HKLM seems
like it is just what install4j does. As far as I can tell?
For Standard users, I think you want to ensure everything goes under
HKCU and for Administrator/Power users you may want to have everything
under HKLM. I think you’re going to get a bunch of bugs filed if
Standard users can’t install (due to the HKCU/HKLM split) because their
system is locked down and they can’t authenticate as an Administrator.
Jon
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email