Una aplicación portátil ( aplicación portátil ), a veces también llamada independiente , es un programa diseñado para leer y escribir sus ajustes de configuración en una carpeta accesible en la computadora, generalmente en la carpeta donde se puede encontrar la aplicación portátil. Esto facilita la transferencia del programa con las preferencias y los datos del usuario entre diferentes computadoras. Un programa que no tiene opciones de configuración también puede ser una aplicación portátil.
Las aplicaciones portátiles se pueden almacenar en cualquier dispositivo de almacenamiento de datos , incluido el almacenamiento masivo interno , un recurso compartido de archivos , almacenamiento en la nube o almacenamiento externo como unidades USB y disquetes, almacenando sus archivos de programa y cualquier información de configuración y datos solo en el medio de almacenamiento. Si no se requiere información de configuración, se puede ejecutar un programa portátil desde un almacenamiento de solo lectura, como CD-ROM y DVD-ROM . Algunas aplicaciones están disponibles en versiones instalables y portátiles.
Algunas aplicaciones que no son portátiles de forma predeterminada admiten la portabilidad opcional a través de otros mecanismos, siendo los más comunes los argumentos de línea de comandos . Los ejemplos pueden incluir /portable
simplemente indicar al programa que se comporte como un programa portátil o --cfg=/path/inifile
especificar la ubicación del archivo de configuración.
Como cualquier aplicación, las aplicaciones portátiles deben ser compatibles con el hardware y el sistema operativo del sistema informático .
Dependiendo del sistema operativo, la portabilidad es más o menos compleja de implementar; para sistemas operativos como AmigaOS , todas las aplicaciones son, por definición, portátiles.
Aplicaciones portátiles de Windows
Una aplicación portátil no deja sus archivos o configuraciones en la computadora host ni modifica el sistema existente y su configuración. La aplicación no escribe en el registro de Windows [ cita requerida ] ni almacena sus archivos de configuración (como un archivo INI ) en el perfil del usuario ; en su lugar, almacena sus archivos de configuración en el directorio portátil. Otro requisito, dado que las rutas de los archivos a menudo difieren al cambiar de computadora debido a la variación en las asignaciones de letras de unidad , es la necesidad de que las aplicaciones las almacenen en un formato relativo . Si bien algunas aplicaciones tienen opciones para admitir este comportamiento, muchos programas no están diseñados para hacerlo. Una técnica común para estos programas es el uso de un programa de inicio para copiar la configuración y los archivos necesarios en la computadora host cuando se inicia la aplicación y moverlos de nuevo al directorio de la aplicación cuando se cierra.
Una estrategia alternativa para lograr la portabilidad de la aplicación dentro de Windows, sin requerir cambios en el código fuente de la aplicación, es la virtualización de la aplicación : una aplicación se "secuencia" o "empaqueta" en una capa de tiempo de ejecución que intercepta de forma transparente su sistema de archivos y las llamadas de registro, y luego las redirige a otras almacenamiento persistente sin el conocimiento de la aplicación. Este enfoque deja la aplicación en sí misma sin cambios, pero portátil.
El mismo enfoque se utiliza para los componentes individuales de la aplicación: bibliotecas en tiempo de ejecución , componentes COM o ActiveX , no solo para toda la aplicación. [1] Como resultado, cuando los componentes individuales se portan de tal manera, pueden: integrarse en aplicaciones portátiles originales, instanciar repetidamente (instalar virtualmente) con diferentes configuraciones / ajustes en el mismo sistema operativo (SO) sin conflictos mutuos. Como los componentes transferidos no afectan a las entidades relacionadas protegidas por el sistema operativo (registro y archivos), los componentes no requerirán privilegios administrativos para su instalación y administración.
Microsoft vio la necesidad de un registro específico de la aplicación para su sistema operativo Windows ya en 2005. [2] Finalmente incorporó parte de esta tecnología, utilizando las técnicas mencionadas anteriormente, a través de su base de datos de compatibilidad de aplicaciones [3] utilizando sus desvíos [ 4] biblioteca de códigos, en Windows XP. No puso ninguna de estas tecnologías a disposición a través de las API de su sistema .
Portabilidad en sistemas Linux y similares a Unix
Los programas escritos con una base similar a Unix en mente a menudo no hacen suposiciones. Mientras que muchos programas de Windows asumen el usuario es un administrador -algo muy frecuente en los días de Windows 95 / 98 / ME (y hasta cierto punto en Windows XP / 2000 , aunque no en Windows Vista o Windows 7 ) -como resultaría rápidamente Errores de "Permiso denegado" en entornos similares a Unix, ya que los usuarios estarán en un estado sin privilegios con mucha más frecuencia. Por lo tanto, los programas generalmente están diseñados para usar la HOME
variable de entorno para almacenar configuraciones (por ejemplo, $HOME/.w3m
para el navegador w3m ). El enlazador dinámico proporciona una variable de entorno LD_LIBRARY_PATH
que los programas pueden utilizar para cargar bibliotecas desde directorios no estándar. Suponiendo que /mnt
contiene los programas portátiles y la configuración, una línea de comando puede verse así:
HOME=/mnt/home/user LD_LIBRARY_PATH=/mnt/usr/lib /mnt/usr/bin/w3m www.example.com
Se puede lograr una aplicación Linux sin necesidad de interacción del usuario (por ejemplo, adaptando un script o variable de entorno) en diferentes rutas de directorio con la opción GCC Linker , $ORIGIN
que permite una ruta de búsqueda de biblioteca relativa. [5]
No todos los programas cumplen con esto; algunos ignoran completamente $ HOME y en su lugar hacen una búsqueda de usuario /etc/passwd
para encontrar el directorio de inicio, frustrando así la portabilidad.
También hay formatos de paquetes de distribución cruzada que no requieren derechos de administrador para ejecutarse, como Autopackage , klik (ahora llamado AppImage) o CDE, pero que obtuvieron una aceptación y un soporte limitados en la comunidad de Linux en la década de 2000. [6] [7] [8] Alrededor de 2015, la idea de empaquetado independiente de distribución y portátil para el ecosistema Linux ganó más fuerza cuando Linus Torvalds discutió este tema en la DebConf 2014 y aprobó posteriormente AppImage para su aplicación de registro de inmersiones Subsurface . [9] [10] [11] Por ejemplo, MuseScore y Krita siguieron en 2016 y comenzaron a usar compilaciones de AppImage para la implementación de software. [12] [13] RedHat lanzó en 2016 el sistema Flatpak , que es un sucesor del proyecto glick de Alexander Larsson que se inspiró en klik (ahora AppImage). [14] De manera similar, Canonical lanzó en 2016 paquetes Snap para Ubuntu y muchas otras distribuciones de Linux.
Muchas aplicaciones de Mac que se pueden instalar mediante la función de arrastrar y soltar son intrínsecamente portátiles como paquetes de aplicaciones de Mac. [15] Los ejemplos incluyen Mozilla Firefox , Skype y Google Chrome, que no requieren acceso de administrador y no necesitan colocarse en un área central restringida. Las aplicaciones colocadas en /Users/username/Applications
( ~/Applications
) se registran con macOS LaunchServices de la misma manera que las aplicaciones colocadas en la /Applications
carpeta principal . Por ejemplo, al hacer clic con el botón derecho en un archivo en Finder y luego seleccionar "Abrir con ...", se mostrarán las aplicaciones disponibles tanto en / Aplicaciones como en ~ / Aplicaciones. Los desarrolladores pueden crear instaladores de productos Mac que permitan al usuario realizar una instalación en el directorio de inicio, denominada "Instalar solo para mí" en la interfaz de usuario del instalador. [16] Tal instalación se realiza como usuario.
Ver también
- Unidad de carga
- Lista de software portátil
- WinPenPack
- Creadores de aplicaciones portátiles
- LiberKey
- PortableApps.com
- U3
- Virtualización de aplicaciones
- Turbo (software)
- VMware ThinApp
- USB en vivo
- Ceedo
- VirtualBox portátil
- Windows To Go
- Portabilidad de datos
- Interoperabilidad
Referencias
- ^ "Tecnología de conversión de aplicaciones portátiles" . Software Sphinx. Archivado desde el original el 7 de septiembre de 2010 . Consultado el 19 de enero de 2012 .
- ^ "Registro de aplicaciones portátiles" . ip.com . Consultado el 19 de enero de 2012 .
- ^ Ionescu, Alex. "Secretos de la base de datos de compatibilidad de aplicaciones (SDB) - Parte 1" . Consultado el 19 de enero de 2012 .
- ^ "Desvíos" . Investigación de Microsoft . Consultado el 19 de enero de 2012 .
- ^ Hustvedt, Eskild (8 de febrero de 2009). "Nuestra nueva forma de conocer la LGPL" . Archivado desde el original el 20 de febrero de 2009 . Consultado el 9 de marzo de 2011 .
Puede usar una palabra clave especial $ ORIGIN para decir 'relativo a la ubicación real del ejecutable'. De repente, descubrimos que podíamos usar -rpath $ ORIGIN / lib y funcionó. El juego estaba cargando las bibliotecas correctas, por lo que era estable y portátil, ¡pero ahora también estaba completamente en el espíritu de la LGPL y en la letra!
- ^ Vining, Nicholas (13 de octubre de 2010). "Estimada comunidad de Linux: necesitamos hablar" . Juegos de Gaslamp . Consultado el 30 de enero de 2011 .
La comunidad de Linux, en su infinita sabiduría, procede a incendiar CDE. [...] "Todos deberíamos utilizar la gestión de paquetes". Esto es lo que quiero decir, y deje que mis palabras desciendan desde las cimas de las montañas, escritas en pequeñas tablillas de piedra: La gestión de paquetes no es una panacea universal.
- ^ Byfield, Bruce (12 de febrero de 2007). "Autopackage luchando por ganar aceptación" . linux.com. Archivado desde el original el 31 de marzo de 2008 . Consultado el 21 de enero de 2012 .
Si Hearn está en lo cierto, la verdadera lección de Autopackage no es cómo mejorar la instalación de software, sino la dificultad, tal vez la imposibilidad, de cambios a gran escala en la arquitectura de Linux tan tarde en su historia. Es una conclusión aleccionadora y decepcionante para un proyecto que alguna vez pareció tan prometedor.
- ^ "AppImages" . Proyecto elemental. Archivado desde el original el 13 de diciembre de 2010 . Consultado el 19 de enero de 2012 .
- ^ Linus Torvalds (29 de agosto de 2014). "Preguntas y respuestas con Linus Torvalds" (video) . DebConf 2014 Portland . debian .net. 6:28 . Consultado el 14 de mayo de 2016 .
Lo he visto de primera mano con el otro proyecto en el que estoy involucrado, que es mi aplicación de registro de inmersiones. Creamos binarios para Windows y OSX, básicamente no hacemos binarios para Linux. ¿Por qué? Porque hacer binarios para aplicaciones de escritorio Linux es un gran dolor de cabeza.
Mantenimiento de CS1: utiliza el parámetro de autores ( enlace ) - ^ Torvalds, Linus . "Esto es genial" . Google+ .
Finalmente pude jugar con la versión "AppImage" de + Subsurface, y realmente parece que "simplemente funciona".
- ^ Hohndel, Dirk (25 de noviembre de 2015). "Esto es genial" . Google+ .
Yo, como mantenedor de la aplicación, ya no quiero que mi aplicación esté incluida en una distribución. Demasiado dolor para una ganancia absolutamente nula. Siempre que recibo un informe de error, mi primera pregunta es "oh, ¿qué versión de qué distribución? ¿Qué versión de qué biblioteca? ¿Qué conjunto de parches insanos se aplicaron a esas bibliotecas?". No, Windows y Mac lo hacen bien. Yo controlo las bibliotecas contra las que se ejecuta mi aplicación. [...] Con una AppImage puedo darles eso. Algo que se ejecuta en su computadora.
- ^ Weiss, Isaac. "Se lanza MuseScore 2.0.3" . MuseScore.org . MuseScore. Archivado desde el original el 23 de abril de 2016 . Consultado el 5 de abril de 2016 .
- ^ "Krita 3.0 lanzado" . Krita.org . Krita. 2016-05-31.
- ^ Experimentos con paquetes de aplicaciones de ejecución intemporal por Alex Larsson (2007)
- ^ "Distribución de su solicitud" . developer.apple.com . Consultado el 23 de mayo de 2017 .
- ^ "Referencia XML de distribución" . developer.apple.com . Consultado el 23 de mayo de 2017 .