Una aplicación portátil -del inglés "portable"- es una aplicación informática que puede ser utilizada, sin instalación previa, en un ordenador que posea el sistema operativo para el que fue programada. Esto significa que no es necesaria la instalación de bibliotecas adicionales en el sistema para su funcionamiento que modifique la información de configuración del ordenador.
No todas las aplicaciones informáticas son portátiles. Usualmente existe una versión normal de la aplicación (típicamente no portátil), y luego, esta se modifica para crear una aplicación portátil. Por otro lado, hay aplicaciones que sin ser modificadas pueden ser usadas como aplicaciones para llevar, como eMule, ya que se distribuyen en un ejecutable y no necesitan ser instaladas sino solo copiarse a una carpeta, que bien podría estar en una memoria USB.
Este tipo de aplicación se puede almacenar en cualquier dispositivo de almacenamiento, incluyendo programas internos de almacenamiento masivo y el almacenamiento externo, como memorias USB y disquetes - almacenar sus archivos de programa y la información de configuración y los datos en el soporte de almacenamiento solo. Si se requiere información de configuración de un programa portátil se puede ejecutar desde de sólo lectura de almacenamiento tales como CD-ROM y DVD-ROM. Algunas aplicaciones están disponibles en instalable y versiones portátiles..
Es de reseñar que en algunos sistemas operativos como AmigaOS el concepto de aplicación portátil es totalmente improcedente, puesto que el propio S.O. está diseñado para que las aplicaciones sean portátiles por definición. Dependiendo del sistema operativo puede ser más o menos compleja la portabilidad de las aplicaciones.
Aplicaciones portátiles para OS
Microsoft Windows
La mayoría de los programas para Microsoft Windows no están diseñados para ser portátiles. El registro de Windows, dada la manera en que se gestionan las bibliotecas de enlace dinámico, y la estructura del instalador de Windows, tienden a hacer que la instalación de los programas sea de sentido único. Muchas aplicaciones populares como Adobe Photoshop o Microsoft Word, por ejemplo, utilizan el registro de manera intensiva, y almacenan información en muchos directorios del sistema de ficheros, a pesar de que se recomienda utilizar el registro solamente para almacenar la configuración básica de la aplicación, y el directorio personal del usuario para almacenar ficheros más grandes.
Para crear aplicaciones portátiles, los desarrolladores deben conseguir que la aplicación deje el ordenador donde se ha ejecutado, completamente "limpio". Esto implica que la aplicación no debe usar el registro, ni guardar ficheros en ningún lugar que no sea su directorio de instalación.
Una aplicación portátil no sale de sus archivos o la configuración en el equipo del cliente, lo que puede ser conveniente o necesario si el usuario carece de privilegios de administrador en el ordenador. Normalmente, la aplicación no escribe en el registro de Windows o almacena sus archivos de configuración (como un archivo INI) en la carpeta o directorio del usuario, sino que almacena sus archivos de configuración en el directorio del programa. Otro requisito, ya que las rutas de archivos a menudo difieren en el cambio de equipos, debido a la variación en las asignaciones de letra de unidad de Windows, es la necesidad de aplicaciones para que los guarde en una relación de formato. Mientras que algunas aplicaciones tienen opciones para apoyar este comportamiento, muchos programas no están diseñados para hacer esto. Una técnica común para este tipo de programas es el uso de un programa de lanzamiento para copiar la configuración y los archivos necesarios en el equipo cliente cuando se inicia la aplicación y pasar de nuevo al directorio de la aplicación cuando se cierre.
Una estrategia alternativa para la consecución de portabilidad de la aplicación dentro de Windows, sin necesidad de cambios en el código fuente de la aplicación, es la virtualización de aplicaciones : una aplicación es "secuenciada" o "envasada" en una capa transparente de tiempo de ejecución que intercepta su sistema de archivo de registro de llamadas y, a continuación, vuelve a dirigir éstos a otro almacenamiento persistente sin el conocimiento de la aplicación. Este enfoque deja la propia aplicación sin cambios y, sin embargo, portátil.
El mismo procedimiento se utilizará para los componentes de las aplicaciones individuales: las bibliotecas en tiempo de ejecución , COM o componentes ActiveX , no sólo para toda la aplicación. Como resultado, cuando los componentes individuales se informaron de tal manera que son capaces de ser: integrado en aplicaciones portátiles originales, instanciados repetidamente (prácticamente instalada) con diferentes configuraciones / ajustes en el mismo sistema operativo (OS) y sin conflictos mutuos. Como los componentes portados no afectan a las entidades relacionadas OS-protegidas (registro y archivos), los componentes no requieren privilegios administrativos para la instalación y la gestión.
Microsoft vio, ya en 2005, como era necesario para su sistema operativo Windows un registro específico de las aplicaciones. Con el tiempo ha ido incorporando algunos detalles de esta tecnología, por ejemplo, a través de su aplicación de base de datos de compatibilidad o usando desvíos en la biblioteca de códigos, en Windows XP. No obstante, ha hecho el uso de esta tecnología disponible para cualquiera a través de las API del sistema.
En marzo del año 2004, el programador y desarrollador de aplicaciones John T. Haller fundó el sitio PortableApps.com que comenzó a desarrollar software portátil para Windows bajo licencias de código abierto, freeware y comercial.[1]
Macintosh
Muchos programas para Mac OS X son inherentemente portátiles al estar empaquetados en un formato de arrastrar e instalar, más que como instaladores independientes. Sin embargo, algunas aplicaciones no son portátiles ya que guardan las preferencias del usuario en el disco duro donde está instalado el sistema operativo.
Sistemas basados en Unix
Los programas suelen estar diseñados alrededor de la variable HOME para guardar las preferencias del usuario (por ejemplo $HOME/.w3m para el navegador w3m). Esto hace que los programas diseñados para los entornos UNIX sean especialmente portátiles. No obstante, algunos programas no demasiado bien diseñados no respetan esta convención. Las aplicaciones portátiles para los sistemas operativos GNU/Linux fueron desarrolladas en el año 2004 por el programador y economista alemán Simon Peter en el formato denominado inicialmente klik, y luego como LinuxPortableApp en el año 2012 hasta que en el año 2013 presentó el formato actual AppImage bajo el cual se distribuyen centenares de aplicaciones bajo distintas licencias permisivas o no de software libre.
Virtualización
Una estrategia alternativa para conseguir la portabilidad de las aplicaciones en Windows, sin tener que modificar el código fuente de la aplicación, es la virtualización. Para utilizar la virtualización, una aplicación puede ser rodeada de dll's que intercepten todas las llamadas al sistema. Esta capa de virtualización puede interceptar todas las llamadas no portátiles y hacer que una aplicación se ejecute sin problemas y sin instalarse previamente en el sistema operativo.