10

¿Alguien sabe de un buen marco de desarrollo de software o similar que tenga las siguientes propiedades?¿Hay algún dispositivo USB ejecutable, sin instalación, con frameworks de software multiplataforma (con GUI)?

  • Plataforma cruzada: debe poder ejecutarse en XP, Vista, OSX y versiones comunes de Linux (como Ubuntu y Kubuntu).
  • Sin instalación: puede ejecutar el software desde una memoria USB sin tener que copiar nada en la máquina host.
  • Tiene buena compatibilidad con la GUI (esta es la razón por la que this question no da una respuesta adecuada, por lo que puedo ver).
  • Licencias permisivas como LGPL o BSD o similares.

Entre los requisitos más suaves están teniendo un conjunto de abstracciones para la funcionalidad de back-end más común, tales como enchufes, presentar IO, y así sucesivamente (Por lo general hay algunas adaptaciones específicas plataforma necesaria), y el apoyo a un buen lenguaje, tales como Python o C++, aunque generalmente es divertido aprender uno nuevo (es decir, no perl).

Creo que los posibles candidatos son Qt 4.5 o superior (pero el software IFAIK Qt no se ejecutará en Vista sin ninguna instalación (?)), Algunos wxWidgets o quizás la solución wxPython, quizás gtkmm. Los ejemplos que he encontrado han fallado en uno u otro de los requisitos. Esto no significa que no existan tales ejemplos, solo significa que no he encontrado ninguno. Entonces, me preguntaba si alguien por ahí sabe de alguna solución existente para esto.

Algunas aclaraciones;

  • Por "framework" me refiero a algo así como Qt o gtkmm o python con un paquete de widgets.
  • Se trata de poder ejecutar el producto final en múltiples plataformas, desde un dispositivo, sin instalación, no se trata de tener un entorno de desarrollo portátil.
  • No es un bastón de arranque.
  • Está bien tener que construir el software específicamente para los diferentes objetivos, si es necesario.

El caso de uso que estoy viendo es que tiene algún tipo de software que usted confía en (tales como la planificación de proyectos, administración de la información, las herramientas de análisis o similar) que:

  • no se basa en tener una conexión a Internet está disponible.
  • se ejecuta en diferentes máquinas host en las que no está realmente bien instalar nada.
  • es movido por un usuario a través de un medio físico (como una memoria USB).
  • se ejecuta en diferentes sistemas operativos, como Windows, Vista, Ubuntu, OSX.
  • funciona con los mismos datos en estos diferentes hosts (los datos se pueden almacenar en el host o en el dispositivo).
  • no está realmente restringido en qué tan grande es el marco incluido (a menos que sea varios gigabytes, lo que no es realmente realista).

También está bien tener instalaciones paralelas en el stick siempre que el software se comporte igual y pueda trabajar con los mismos datos cuando se ejecute en los diferentes objetivos.

Una vista diferente del caso de uso sería que tengo cinco máquinas recién instaladas con Vista, XP, OSX, Ubuntu y Kubuntu respectivamente frente a mí. Me gustaría, sin tener que instalar nada nuevo en las máquinas, poder ejecutar el mismo software desde un solo dispositivo USB (que cumpla con los requisitos de GUI anteriores, etc.) en cada una de estas cinco máquinas (aunque, si es necesario, desde diferentes paquetes en el palo).

¿Esto es posible?

Edit: He experimentado un poco con una aplicación Qt que utiliza algunos widgets y una base de datos sqlite. Fue fácil hacer que funcione en un ubuntu dist y en osx. Para Windows XP y Vista tuve que copiar QtCored4.dll, QtGuid4.dll, QtSqld4.dll y mingwm10.dll al directorio de distribución (esto era código de depuración) y copié el qsqlited4.dll a una carpeta llamada "sqldrivers" en la distribución directorio.

+0

Last.FM utiliza QT y que se ejecuta en Vista bien. – Fowl

+0

Sin instalación? – FeatureCreep

Respuesta

4

Menciona wxWidgets pero lo descarta como fallo al menos uno de los requisitos.

No sé cuales son sus necesidades y de qué manera wxWidgets no funcionaría para usted, pero En mi opinión lo hace cumplir con ellas:

Multiplataforma: debe ser ejecutable en XP, Vista, OSX y versiones comunes de Linux.

No correr en esas plataformas, pero "versiones comunes de Linux" no es lo suficientemente bueno, ya que nunca se puede estar seguro de que las bibliotecas de interfaz gráfica de usuario necesarias para wxGTK (que no deberían estar vinculados a estáticamente) serán instalado Sin embargo, esto también es un problema para otras soluciones, a menos que planee poner todo en el stick.

Sin instalación: puede ejecutar el software desde una memoria USB sin tener que copiar nada en la máquina host.

Ver el punto anterior, necesitaría especificar qué bibliotecas son necesarias en Linux. También podría especificar en tiempo de compilación no utilizar algunas de las bibliotecas proporcionadas por el sistema (por ejemplo, para gráficos, compresión, expresiones regulares) sino utilizar las bibliotecas internas de wxWidgets.

Tener un buen soporte GUI

Check.

Licencias permisivas como LGPL o BSD o similares.

Comprobar. También puede vincular estáticamente wxWidgets a su aplicación.

apoyar un buen lenguaje como Python o C++

Soporta tanto, y hay enlaces con otros idiomas.

tener un conjunto de abstracciones para la funcionalidad de back-end más común, tales como enchufes, archivo IO, y así sucesivamente

Tiene algunas abstracciones por el estilo, pero se puede enlazar a otra cruzada bibliotecas de plataforma también.

Usamos wxWidgets para FlameRobin, un programa de administración gráfica para el servidor Firebird SQL. Tiene puertos activos para Windows, Linux y Mac OS X, y se ha compilado para al menos algunas variantes de BSD y Solaris también. Definitivamente funciona desde un dispositivo en Windows, no lo he intentado con Linux o Mac OS X, pero no veo por qué no debería existir allí también.

+0

Gracias. Buena información. En realidad, no me importa tener paquetes "grandes" en el palo ya que son bastante baratos en estos días. Estoy tratando de minimizar la necesidad/riesgo de tener que instalar algo en el objetivo. Agregaré algún tipo de caso de uso a la pregunta. – FeatureCreep

+0

Todavía no veo nada en sus requisitos que elimine una solución de wxWidgets. Lo que mencioné como áreas problemáticas en mi respuesta probablemente también sea problemático con otras soluciones, si tiene la intención de integrarse con el escritorio de Linux. Con cada solución, deberá definir algunos requisitos básicos para que se ejecute el sistema operativo objetivo. – mghie

+0

Ya veo. ¿Crees que es posible agrupar las bibliotecas wxGTK para evitar el problema de instalación? ¿O estoy malinterpretando tu argumento? – FeatureCreep

0

Bueno, depende de lo que quiere decir con 'paquete'. Kylix estuvo cerca de ser una cosa así. Estaba basado en QT, y le permitió escribir una vez y compilar para Windows + Linux. Sin embargo, no era una solución de código abierto.

+0

Ok, quiero decir "paquete" como en "framework", creo. Lo cambiaré. – FeatureCreep

2

Usted puede mirar en Mono es multiplataforma, tiene interfaz gráfica de usuario (GTK +, o Winforms 2.0) y puedo ejecutar código sin necesidad de instalar.

+0

Gracias. ¿Conoce algún ejemplo de este tipo de software sin instalación? Es decir. que no necesita un tiempo de ejecución mono para instalarse en el destino y no vincula el tiempo de ejecución estáticamente (ya que esto parece requerir licencias diferentes)? – FeatureCreep

+0

La razón por la que pregunto es que he estado buscando en Google pero no encontré ningún ejemplo. – FeatureCreep

+1

En realidad, ahora he encontrado algunos ejemplos: http://cocoa-sharp.com/index.php?option=com_content&task=view&id=4&Itemid=1 – FeatureCreep

4

Java.

  • Tiene soporte para GUI.

  • Proporciona su red/archivo/etc. abstracciones

  • Es multiplataforma. La mayoría de las plataformas en las que puedes pensar tienen un JRE disponible.

  • No es necesario instalar un JRE. La mayoría de los usuarios probablemente ya tengan uno, y si no, puede ejecutar el JRE apropiado directamente desde el dispositivo.

  • Puede proporcionar varios scripts de inicio para varias plataformas para ejecutar la aplicación bajo el JRE apropiado.

+0

Gracias, vale la pena investigarlo. – FeatureCreep

+0

+1. La única opción que puedo pensar realmente. Mono tiene algunos problemas menores a veces (no sé si esto aplica si realmente DESARROLLAS la aplicación en mono) – WhyNotHugo

+0

No he jugado con Mono, pero desconfío de lo "realmente compatible" que es. –

3

Algo más a tener en cuenta es HTML + Javascript. : D

+0

¿Quiere decir algún tipo de ejecución sin servidor en el navegador solamente? – FeatureCreep

+0

Sí. Es una plataforma * muy * ampliamente admitida (aunque variada), pero es probable que tengas problemas para vivir dentro de la caja de arena. Puedes hacer muchas cosas, incluso sin un servidor. Sin embargo, un servidor ayuda: D – Fowl

+0

MUCHA programación requiere, pero en realidad es 100% multiplataforma. Buena persona – WhyNotHugo

0

Hice una pregunta similar en este enlace http://www.24hsoftware.com/DevelopersForum/CrossPlatform-C-Library.html y la mejor respuesta parece ser QT.

He comenzado a usar QT, pero no es tan fácil como esperaba, debido principalmente a problemas de implementación debido al infierno de DLL, el infierno de Winsx y el infierno manifiesto.

+1

También probé Qt, y mi experiencia es la opuesta. Para Windows, simplemente pellizqué los dlls de Qt relevantes en el mismo directorio que la aplicación y el complemento de sqlite que necesitaba se colocó en un directorio de complementos. Esto funcionó en osx, ubuntu, xp y vista. Actualizaré la pregunta con más detalles cuando tenga el tiempo. – FeatureCreep

0

Tclkit es un sistema autónomo Tcl/Tk de un solo archivo. La versión mac que tengo es de aproximadamente 3.8 megas. Puede obtener una versión para casi cualquier sistema operativo moderno. Llevo un dispositivo USB que tiene mac, windows y binarios de Linux para que pueda ejecutar mis scripts en cualquier plataforma. No se requiere instalación, simplemente copie un archivo donde desee.

Las versiones más recientes de tcklit utilizan aparatos nativos, temáticas (aunque, en * nix realmente no hay un único conjunto "nativo" de widgets ...)

Cuestiones relacionadas