2009-04-22 22 views
7

Una de mis cosas favoritas acerca de tener un dispositivo de almacenamiento flash USB es transportar un montón de herramientas útiles conmigo. Me gustaría escribir algunas herramientas y hacer que funcionen bien en este tipo de entorno. Sé que C# es el mejor, y soy productivo en él, así que podría obtener una aplicación de formularios de Windows en muy poco tiempo de esa manera.Escritura de aplicaciones portátiles de unidad USB en C#

Pero, ¿qué consideraciones debo tener en cuenta al hacer una aplicación portátil? Algunos de los que puedo pensar, pero no sé las respuestas a:

1) Portabilidad del lenguaje - Ok, sé que cualquier máquina en la que lo use requerirá la instalación de .NET runtime. Pero como solo uso algunas máquinas de Windows regularmente, esto no debería ser un problema. Podría usar otro idioma para codificarlo, pero luego pierdo productividad, especialmente en lo que respecta a un diseñador de formularios fácil. ¿Hay algún otro problema al ejecutar una aplicación .NET desde una unidad flash?

2) Ciclos de lectura/escritura - En C#, ¿cómo me aseguro de que mi aplicación no escriba innecesariamente en la unidad? ¿Siempre controlo las escrituras, o hay "escrituras ocultas" que necesito contabilizar?

3) Pregunta abierta: ¿Hay algún otro problema relacionado con aplicaciones portátiles que deba conocer, o tal vez sugerencias a otros lenguajes con IDEs buenos que me darían un nivel similar de productividad pero una mejor portabilidad?

Respuesta

10
  • 1) No debe haber ningún problema ejecutan una aplicación .NET de un flash unidad.
  • 2) Debería tener el control de más escribe. Asegúrese de escribir en temp o en alguna otra ubicación en el disco duro , y no en la unidad flash .Pero write-cycles no debe ser un problema: incluso con el uso de moderado a pesado , la mayoría de las unidades flash tienen una vida útil de de años.
  • 3) Sólo lo tratan como árbitro pita cualquier aplicación que tiene el despliegue de estilo xcopy y tratar de explicar para su aplicación con gracia si no alguna dependencia no está en la caja.
0

En realidad, no tengo ninguna experiencia con esto, así que podría ser mejor tomar lo que digo con un poco de sal. Pero aquí está mi opinión:

No necesita hacer nada especial.

No es realmente una consideración del desarrollador de una aplicación cómo y cuándo se realizan las escrituras en una unidad, que es algo que está mucho mejor controlado por el sistema operativo. Sé que Windows almacena en caché las unidades USB, así que confío en que maneje eso.

Lo único que debe tener en cuenta es que su aplicación no se instalará. Por lo tanto, debe asegurarse de diseñarlo para que se ejecute por completo dentro del directorio en el que se implementa. Opcionalmente, también puede realizar algunas escrituras en el directorio de inicio de los usuarios, pero esto debe hacerse a través de las variables de entorno apropiadas.

Me gustaría escribir y ver si hay algo especial sobre una unidad flash que el sistema operativo no maneja.

+0

Si el disco está optimizado para una extracción rápida, y la mayoría de las unidades de memoria flash son, Windows escribirá y no caché. – Michael

+0

Si el disco está optimizado para una extracción rápida ¿hay alguna razón para no respetar los deseos de los usuarios y escribir en él de inmediato? Si el disco tiene un requisito de escritura en caché, encienda el soporte del sistema operativo en lugar de volver a implementarlo. –

+0

@JayArr - Estaba comentando la afirmación de que Windows almacena en caché las unidades flash USB. En general, esto no es verdad. – Michael

0

Realmente no tengo las respuestas para el n. ° 1 o n. ° 3. Pero para # 2, .NET CLR no debería estar escribiendo en la carpeta de "instalación" de la aplicación (es decir, la unidad flash) a menos que su código específicamente lo indique o esté usando y modificando configuraciones basadas en archivos (ini, xml, etc.) que viven con la aplicación.

El número 1 es realmente el kicker si no solo está escribiendo cosas para uso personal. Obviamente, es imposible alojar una copia portátil de la CLR completa en la memoria USB. Pero hay herramientas que pueden escanear su ensamblaje en busca de sus dependencias y empaquetarlas en un .exe independiente, por lo que no es necesario que el CLR esté necesariamente instalado en el sistema de destino.

2

Si desea usar objetos com, use com sin registros e incluya los objetos com con su programa.

2

Siempre debe tener el control de sus escrituras. Las aplicaciones se deben cargar en la RAM al inicio, y luego la memoria está asignada en la RAM, por lo que no se escribe nada en la unidad flash.

Lo más importante para una aplicación portátil es que, básicamente, no es necesaria ninguna instalación para su aplicación. No desea depender especialmente de los valores del registro, ya que su aplicación no se 'instalará' en otras computadoras.

Uno de los problemas con las aplicaciones portátiles que puede considerar es la persistencia de los datos. En general, usted escribe en la carpeta de datos de aplicación de un usuario para guardar datos. Si este es el caso, los datos guardados solo se aplicarán al usuario en esa computadora. Si desea algunos datos de la aplicación local, puede crear un archivo XML seralizado para su configuración y almacenarlo localmente en el directorio de la aplicación. Esta escritura de archivo probablemente sería la única acción de escritura de la que tendría que preocuparse.

Para su problema de portabilidad .NET, también puede escribir un pequeño programa de entrada en C++, que verifica si la computadora tiene .NET instalado. .NET tiene valores de registro que puede verificar para ver las versiones instaladas, de modo que si está instalado .NET, ejecute su aplicación, de lo contrario, muestre un mensaje que indique que primero se debe instalar .NET.

Editar: Me gustaría agregar que hago desarrollo de aplicaciones para máquinas de ultrasonido usando XAML en C# 3.0. La aplicación que escribo funciona perfectamente desde una unidad flash USB, mientras que todas las configuraciones de usuario se almacenan en una base local de datos de aplicaciones, por lo que no se escribe nada en el USB. Si bien la aplicación se puede instalar a través de un instalador .exe, el instalador no escribe los valores de registro de los que depende la aplicación.

Cuestiones relacionadas