[izpack-users] Windows XP Registry Entries cleaning up

Daniel Silva ddso.01 at gmail.com
Tue Jul 24 20:11:56 CEST 2007


Sorry,  but what does it mean "roll entries back"?

I looked at RegistryImpl (thats probably the one used) and I couldnt figure
out on witch case of the rli.getType() the execution falls. It should fall
on the RegistryLogItem.CREATED_VALUE or RegistryLogItem.CREATED_KEY case,
for those are the ones that delete entries. But this name, "CREATED", is
really strange for a deleting process.

Intuitively, it falls on the RegistryLogItem.REMOVED_KEY or
RegistryLogItem.REMOVED_VALUE. But thoses cases actually creates entries

the switch clause in the RegistryImpl.rewind() is like this:

switch (rli.getType())
                {
                case RegistryLogItem.CREATED_KEY:
                    deleteKeyIfEmpty(rli.getRoot(), rli.getKey());
                    break;
                case RegistryLogItem.REMOVED_KEY:
                    createKeyN(rli.getRoot(), rli.getKey());
                    break;
                case RegistryLogItem.CREATED_VALUE:
                    RegDataContainer currentContents = null;
                    // Delete value only if reg entry exists and is equal to
the stored value.
                    try
                    {
                        currentContents = getValue(rli.getRoot(), rli.getKey(),
rliValueName);
                    }
                    catch (NativeLibException nle)
                    {
                        break;
                    }
                    if (currentContents.equals(rli.getNewValue()))
                    {
                        deleteValueN(rli.getRoot(), rli.getKey(),
rliValueName);
                    }
                    // TODO: what todo if value has changed?
                    break;
                case RegistryLogItem.REMOVED_VALUE:
                    // Set old value only if reg entry not exists.
                    try
                    {
                        getValue(rli.getRoot(), rli.getKey(), rliValueName);
                    }
                    catch (NativeLibException nle)
                    {
                        setValueN(rli.getRoot(), rli.getKey(), rliValueName,
rli
                                .getOldValue());
                    }
                    break;
                case RegistryLogItem.CHANGED_VALUE:
                    // Change to old value only if reg entry exists and
equal to
                    // the
                    // stored value.
                    try
                    {
                        currentContents = getValue(rli.getRoot(), rli.getKey(),
rliValueName);
                    }
                    catch (NativeLibException nle)
                    {
                        break;
                    }
                    if (currentContents.equals(rli.getNewValue()))
                    {
                        setValueN(rli.getRoot(), rli.getKey(), rliValueName,
rli
                                .getOldValue());
                    }
                    break;
                }

On 7/24/07, fxa <fxa_01 at yahoo.com> wrote:
>
>
> Actually what is happening is:  it rolls back entries.  Look at "rewind"
> method in registry handler.  If you start with no entries, uninstall will
> delete entries otherwise it roll them back to previous settings.
>
>
> Bartz, Klaus wrote:
> >
> > Hi Daniel,
> > I am not secure that I have understand right. Do it now work or not?
> > You can have as much Listener as you need. The RegistryHandler will be
> > used internal
> > in the RegistryInstallerListener, but it can be used also at an other
> > place. Then it is needed
> > to use only one instance of it. But I assume that you do not use
> registry
> > at an other point.
> >
> > I have just tested the IzPack 3.10.2 installation and uninstallation. It
> > works as assumed.
> > My box has Windows XP SP2, I use Java SDK 1.5.0_11.
> > If the uninstallation of IzPack after a clean installation (without
> > preexistent keys)
> > will not clean the regkeys I do not know why. Test it on an other
> > computer.
> >
> > Cheers
> >
> > Klaus
> >
> >       -----Original Message-----
> >       From: izpack-users-bounces at lists.berlios.de
> > [mailto:izpack-users-bounces at lists.berlios.de] On Behalf Of Daniel Silva
> >       Sent: Tuesday, July 24, 2007 1:48 PM
> >       To: izpack-users at lists.berlios.de
> >       Subject: Re: [izpack-users] Windows XP Registry Entries cleaning
> up
> >
> >
> >       also, I´m using Windows XP as an administrator, so I must have all
> the
> > rights to change the registry.
> >
> >
> >       On 7/24/07, Daniel Silva <ddso.01 at gmail.com> wrote:
> >
> >               Hi Klaus, thanks again.
> >
> >               I removed the registries myself after uninstalling.
> Installed again and
> > uninstalled all over. The registries are still not automatically
> removed.
> >
> >               I didnt understand what you said about using a second
> RegistryHandler,
> > but the registries that my installation process creates never change.
> I´m
> > only using one for the installation and one for the uninstallation:
> >
> >
> >               <listener  installer="RegistryInstallerListener"
> >                             uninstaller="RegistryUninstallerListener">
> >                             <os family="windows"/>
> >               </listener>
> >
> >               I´m using another for the installation, but there´s
> nothing to do with
> > the registry:
> >
> >               <listener installer="SummaryLoggerInstallerListener"/>
> >
> >               Also, I changed the $APP_NAME to $UNINSTALL_NAME in
> RegistrySpec.xml and
> > CheckedHelloPanel started working the way the manual said it would.
> That´s
> > something, all right. Thanks for that clue.
> >
> >
> >
> >               On 7/24/07, Bartz, Klaus <Klaus.Bartz at coi.de > wrote:
> >
> >                       Hi Daniel,
> >                       if you do not use a second RegistryHandler all
> keys (except some with
> > format multi string) have to
> >                       be removed after uninstall, if the have not
> changed after install.
> >                       If the keys exist before installing, they will
> also exist after
> > uninstall. This can be if you have forgotten the dll
> >                       in the uninstaller (keyword "both") in a previos
> test. The uninstaller
> > do not simple remove the entries else
> >                       it changes the entries to the state before
> installation.
> >                       Therefore remove the not automatically removed
> keys after uninstall and
> > test again with install - uninstall.
> >
> >                       This work only with a direct call of the
> uninstaller.jar, not at
> > debugging with e.g. Eclipse. For the last
> >                       see my email to "fxa".
> >
> >                       Cheers
> >
> >                       Klaus
> >
> >                               -----Original Message-----
> >                               From:
> izpack-users-bounces at lists.berlios.de
> > [mailto:izpack-users-bounces at lists.berlios.de] On Behalf Of Daniel Silva
> >                               Sent: Monday, July 23, 2007 7:53 PM
> >                               To: izpack-users at lists.berlios.de
> >
> >                               Subject: Re: [izpack-users] Windows XP
> Registry Entries cleaning up
> >
> >
> >
> >                               Hi Klaus, thans for the reply.
> >
> >                               the "registryEntries",
> native\COIOSHelper.dll  and the
> > com\izforge\izpack\event\RegistryUninstallerListener.class are all
> there.
> >                               I really dont know if the key are
> persistent or not. How do I know
> > that?
> >
> >                               Even izPack entries are not erase when I
> uninstall it.
> >
> >
> >
> >                               On 7/23/07, Bartz, Klaus <
> Klaus.Bartz at coi.de > wrote:
> >
> >                                       Hi Daniel,
> >                                       sorry for late answer, but I was
> on a workshop.
> >                                       I do not really know why uninstall
> do not work correctly with your
> > program.
> >                                       We use $UNINSTALL_NAME instead of
> $APP_NAME, but this should produce
> > only problems
> >                                       with multiple installations of the
> same program.
> >
> >                                       Try with some additional other
> keys, may be with the root HKCU.
> >
> >                                       Are all keys persistent, or only
> some?
> >                                       Look into your uninstaller.jar(may be with an unzipper or with jar).
> >                                       Is there a file "registryEntries"
> in the root? It is a java object
> > stream, but with some editors
> >                                       you can look into. If you can, is
> there the entry
> >
> SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\<your APP_NAME>
> > ?
> >                                       Is in the uninstaller
> >
> com\izforge\izpack\event\RegistryUninstallerListener.class
> >                                       and
> >                                       native\COIOSHelper.dll        ?
> >
> >                                       Cheers
> >
> >
> >                                       Klaus
> >
> >
> >                                       -----Original Message-----
> >                                       From:
> izpack-users-bounces at lists.berlios.de
> > [mailto:izpack-users-bounces at lists.berlios.de] On Behalf Of Daniel Silva
> >                                       Sent: Monday, July 16, 2007 10:38
> PM
> >                                       To: izpack-users at lists.berlios.de
> >                                       Subject: [izpack-users] Windows XP
> Registry Entries cleaning up
> >
> >
> >                                       Hi,
> >
> >                                       I´ve just started using izPack for
> my applications and I had some
> > trouble with Windows XP registry entries.
> >
> >                                       I have a InstallSpec.xml file for
> the installer creating procedure
> > with the following lines
> >
> >                                       <?xml version="1.0"
> encoding="UTF-8" standalone="yes" ?>
> >                                       <installation version="1.0">
> >                                          (...)
> >                                          <native type="izpack" name="
> ShellLink.dll"/>
> >                                             <native type="3rdparty"
> name="COIOSHelper.dll" stage="both">
> >                                             <os family="windows"/>
> >                                          </native>
> >                                          (...)
> >                                          <resources>
> >                                             (...)
> >                                             <res
> src="./spec/RegistrySpec.xml" id="RegistrySpec.xml"/>
> >                                             (...)
> >                                          </resources>
> >                                          (...)
> >                                          <listeners>
> >                                             <listener
> installer="SummaryLoggerInstallerListener"/>
> >                                             <listener
> installer="RegistryInstallerListener"
>
> >                                                          uninstaller="RegistryUninstallerListener">
> >                                                <os family="windows"/>
> >                                             </listener>
> >                                          </listeners>
> >                                          (...)
> >                                       </installation>
> >
> >                                       And a RegistrySpec.xml like this:
> >
> >                                       <?xml version="1.0"
> encoding="UTF-8" standalone="yes" ?>
> >
> >                                       <registry>
> >                                        <pack name="UninstallStuff">
> >                                         <value name="DisplayName"
> >
> > keypath="SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$APP_NAME"
> >                                          root="HKLM"
> >                                          string="$APP_NAME"/>
> >                                         <value name="UninstallString"
> >
> > keypath="SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$APP_NAME"
> >                                          root="HKLM"
> >                                          string=""$JAVA_HOME\bin\javaw.exe"
> -jar
> > "$INSTALL_PATH\Uninstaller\uninstaller.jar""/>
> >                                         <value name="DisplayIcon"
> >
> > keypath="SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$APP_NAME"
> >                                          root="HKLM"
>
> >                                          string="$INSTALL_PATH\icons\SCarimbo.ico"/>
> >                                         <value name="HelpLink"
> >
> > keypath="SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$APP_NAME"
> >                                          root="HKLM"
> >                                          string="$APP_URL"/>
> >                                             </pack>
> >                                       </registry>
> >
> >                                       I'm using CheckedHelloPanel, so
> $APP_NAME is declared. My problem is
> > that when I uninstall the application, the registry entries are not
> > erased. The application is still listed as installed in Control Panel ->
> > Add or Remove Programs.
> >
> >                                       Am I doing something wrong?
> >
> >                                       Obs.: I've notice that when I
> uninstall izPack itself, its registry
> > entries are not erased either.
> >                                       --
> >                                       Abraços,
> >                                       Daniel Silva
> >
> >
> >
> _______________________________________________
> >                                       izpack-users mailing list
> >                                       izpack-users at lists.berlios.de
> >
> https://lists.berlios.de/mailman/listinfo/izpack-users
> >
> >
> >
> >
> >
> >
> >                               --
> >                               Abraços,
> >                               Daniel Silva
> >
> >
> >                       _______________________________________________
> >                       izpack-users mailing list
> >                       izpack-users at lists.berlios.de
> >
> https://lists.berlios.de/mailman/listinfo/izpack-users
> >
> >
> >
> >
> >
> >
> >               --
> >               Abraços,
> >               Daniel Silva
> >
> >
> >
> >
> >       --
> >       Abraços,
> >       Daniel Silva
> >
> >
> > _______________________________________________
> > izpack-users mailing list
> > izpack-users at lists.berlios.de
> > https://lists.berlios.de/mailman/listinfo/izpack-users
> >
> >
>
> --
> View this message in context:
> http://www.nabble.com/Windows-XP-Registry-Entries-cleaning-up-tf4091026.html#a11766768
> Sent from the izpack users mailing list archive at Nabble.com.
>
> _______________________________________________
> izpack-users mailing list
> izpack-users at lists.berlios.de
> https://lists.berlios.de/mailman/listinfo/izpack-users
>



-- 
Abraços,
Daniel Silva
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://lists.berlios.de/pipermail/izpack-users/attachments/20070724/5936c6ab/attachment-0001.html 


More information about the izpack-users mailing list