A portable application (portable app), sometimes also called standalone, is a program designed to read and write its configuration settings into an accessible folder in the computer, usually in the folder where the portable application can be found. This makes it easier to transfer the program with the user's preferences and data between different computers. A program that doesn't have any configuration options can also be a portable application. Portable applications can be stored on any data storage device, including internal mass storage, a file share, cloud storage or external storage such as USB drives and floppy disks—storing its program files and any configuration information and data on the storage medium alone. If no configuration information is required a portable program can be run from read-only storage such as CD-ROMs and DVD-ROMs. Some applications are available in both installable and portable versions. Some applications which are not portable by default do support optional portability through other mechanisms, the most common being command-line arguments. Examples might include /portable to simply instruct the program to behave as a portable program, or --cfg=/path/inifile to specify the configuration file location. Like any application, portable applications must be compatible with the computer system hardware and operating system. Depending on the operating system, portability is more or less complex to implement; to operating systems such as AmigaOS, all applications are by definition portable. Portable Windows applications A portable application does not leave its files or settings on the host computer or modify the existing system and its configuration. The application does not write to the Windows registry nor stores its configuration files (such as an INI file) in the user's profile; instead, it stores its configuration files in the portable directory. Another requirement, since file paths will often differ on changing computers due to variation in drive letter assignments, is the need for applications to store them in a relative format. While some applications have options to support this behavior, many programs are not designed to do this. A common technique for such programs is the use of a launcher program to copy necessary settings and files to the host computer when the application starts and move them back to the application's directory when it closes. An alternative strategy for achieving application portability within Windows, without requiring application source code changes, is application virtualization: An application is "sequenced" or "packaged" against a runtime layer that transparently