/
Debugging Uninstallers
Debugging Uninstallers
To perform uninstallation, IzPack goes through three phases, each involving a separate process.
The following describes how to remotely debug each of these phases.
Phase 1
This phase:
- Extracts the jar to a temporary directory
- Spawns a new process for Phase 2, referencing the temporary directory as the classpath; and
- Exits
Its invoked by running:
java -jar MyApp/Uninstaller/uninstaller.jar
To debug this phase:
- Place a breakpoint in com.izforge.izpack.uninstaller.Uninstaller.main(String[] args)
- Run the command with the appropriate debug agent settings
- Attach to the process in the debugger
E.g.:
java -jar -Xdebug -Xrunjdwp:transport=dt_shmem,address=jdbconn,server=y,suspend=y MyApp/Uninstaller/uninstaller.jar
Phase 2
This phase:
- Spawns a new process for Phase 3
- Waits for it to complete
- Deletes the temporary directory containing the classes extracted in Phase 1
To debug this phase,:
- Place a breakpoint in com.izforge.izpack.util.SelfModifier.main(String[] args)
- Define the self.mod.debugPort2 property, which specifies the debug port to listen on
- Attach to the process in the debugger using socket transport, and the port above
E.g.:
java -jar -Dself.mod.debugPort2=8002 MyApp/Uninstaller/uninstaller.jar
Phase 3
This phase performs the actual uninstallation.
To debug this phase:
- Place a breakpoint in com.izforge.izpack.util.SelfModifier.main(String[] args)
- Define the self.mod.debugPort3 property, which specifies the debug port to listen on
- Attach to the process in the debugger using socket transport, and the port above
E.g.:
java -jar -Dself.mod.debugPort3=8003 MyApp/Uninstaller/uninstaller.jar
, multiple selections available,
Related content
Installer Runtime Options
Installer Runtime Options
Read with this
Listeners
Listeners
Read with this
BSFInstallerListener and BSFUninstallerListener
BSFInstallerListener and BSFUninstallerListener
Read with this
Logging
Logging
Read with this
LateShortcutInstallListener
LateShortcutInstallListener
Read with this
Header - <info>
Header - <info>
Read with this