C# autoadjuntar archivos ?

SeiYa

Quiero hacer una pequeña aplicación que haga lo siguiente:

Poder adjuntarle un documento (sea de la extensión que sea) y una imagen. Al pulsar en guardar que se cierre la aplicación y al abrirla nuevamente esta aplicación tenga el documento (de la extensión que sea) autoadjuntado de manera que al pulsar un botón se pueda extraer/abrir y que la imagen aparezca en la cabecera de la aplicación.

El problema es que no sé cómo hacer para autoadjuntar archivos a una aplicación (.exe para que sea "portable" en USB) y que se quede modificada con esos archivos adjuntos. Otra idea sería que al pulsar a guardar también se podría generar un ejecutable con ese documento y esa imagen, pero vamos eso sería ya para otro proyecto (ejecutable que generase ejecutables ... blah blah) pero la idea es poder autoadjuntar archivos a un .exe y que permaneciesen dentro pero no sé cómo.

Además la idea sería que este .exe funcionase con lo básico (.Net Framework, nada más).

A ver si me echáis un cable XD

Un saludo!

Soltrac

Lo q pides se puede hacer, pero creo q necesitarás recompilar el ejecutable por lo q te haría falta el CSC.exe dentro del usb por ejemplo.

Seguramente haya otra manera, pero un ejemplo de una aplicación q hace algo como lo q tu quieres es .NETZ.

http://www.madebits.com/netz/download.php

SeiYa

El CSC le puedo tener, la idea es tener en un siito el ejecutable "plantilla" y que este genere el ejecutable final que tenga el documento adjunto y la imagen y ya. Este es el que se va a usar en USB el final por lo que me da exactamente igual que para generarle necesite el CSC el CSS o el CS CZ XD

SeiYa

He estado viendo y creo que va por reflection el tema de generar exes al vuelo pero no sé muy bien cómo ... veré que puedo encontrar ;)

SeiYa

Vale, ya he conseguido varias cosas pero quiero otra cosa.

He conseguido crear un .exe a partir de las características especificadas (teniendo el código en una plantilla etc ...) y que este nuevo .exe contenga los bytes de un .exe en concreto.

Digamos que el proceso es:

Abro mi aplicación, examino y busco un .exe (notepad.exe por ejemplo) pulso generar nuevo exe y tengo un nuevo .exe que se llamará lanzador blah blah con un botón.

Al pulsar este botón debería lanzar el .exe que adjunté antes (notepad.exe) y lo hace pero no como quiero, ahora lo que hace es coger los bytes del archivo adjuntado (el notepad.exe le abre, le lee y le adjunta en bytes[]) generar un nuevo .exe y lanzar este .exe

El problema está en que si no creo ese .exe en un directorio temporal el usuario podría ejecutarle y demás, me gustaría lanzarle en memoria pero no he conseguido más que esto:

Assembly a = Assembly.Load(bin);
MethodInfo method = a.EntryPoint;
if (method != null)
{
      object o = a.CreateInstance(method.Name);

  method.Invoke(o, null);
}

bin es mi array de bytes que tiene el código binario del ejecutable.

El problema viene en que esto no me funciona con aplicaciones como el notepad.exe por ejemplo para hacer las pruebas. Si lo hace con una hecha en .Net pero no con una ajena.

Usuarios habituales

  • SeiYa
  • Soltrac