Back in highschool, I remember obsessing over how many apps I could make portable. http://portableapps.com/ was one of my favorite pastime, and I definitely spent way too many hours of my free time making obscure apps portable. A good portable app had to bootstrap the app along with any of it’s necessary dependencies, maintaining state while running, and remove it’s footprints when it is done. This often involved writing a wrapper around the executable that: Backup the system configs (fun times with registry keys on windows anyone?) Load in the necessary configs the app depends on (again, loading registry keys, inis, any necesesary dlls…) Monitor the changes the app makes On close, it should remove all files / state that the app had created / modified then reinstate the system state from the backup.