Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ejecutable muy pequeño (https://www.clubdelphi.com/foros/showthread.php?t=89638)

juank1971 02-01-2016 17:20:28

ejecutable muy pequeño
 
Hola amigos estoy tratando de hacer una aplicación que se actualice con frecuencia de un ftp solo el ejecutable.

Como ya se ha tratado aquí en el foro el ejecutable es más grande en la versión de delphi xe6 que es la que uso,
después de probar varias ideas de las que encontré por acá me doy cuenta que sigue siendo grande para lo que necesito.

Entonces probé, en las opciones de runtime packages, le puse a true
Donde dice link whith runtime packeges = true;
Y perfecto es todo lo que necesito un ejecutable de 300k
Ahora bien , como primeramente los clientes van a recibir un instalador en ese instalador
Le voy a poner todo lo que necesito para que me funcione la aplicación y luego en la aplicación voy a poner que se actualice solo el ejecutable .
Lo que necesito saber es como puedo obtener todo lo que necesito para ponerlo en la carpeta con el ejecutable, ya probé poniéndole la opción debug y poniendo a false primero link whith runtime packeges a ver si con todo lo que me genera en la carpeta debug ya es suficiente pero no me funciona cuando uso todo el contenido de debug con el ejecutable pequeño de la carpeta Release y con la link whith runtime packeges = true;

Gracias y feliz 2016

Juank

juank1971 02-01-2016 18:13:58

En otras palabras quero poder copiar todas los ficheros necessarios para que funcione la aplicaion en un instalador y el ejecutable pequeño.
para poder actualizarlo nuevamente , en caso de que use otra dll o bpl nueva pues solamente esa copio.

no se si se pueda hacer eso, hasta ahora el trabajo mayor consiste en copiar todo lo necesario para que funcione el programa.

gracias juank

Casimiro Notevi 02-01-2016 18:38:50

¿Por qué no lo dejas todo en un ejecutable?

juank1971 02-01-2016 18:59:21

eso sería lo ideal casimiro pero es que estoy muy lejos de los clientes y el ancho de banda no es el mejor, además hay que hacer muchas modificaciones mínimas muy seguido, y quiero quitarme de arriba el problema de actualizar y poder hacerlo muy rapido, mando un correo que actualizen y con un botón se baja solamente el ejecutable nuevo.

A propósito de eso la forma que logre hacer cambiar el mismo ejecutable que uso la encontré en este foro pero no estaba incompleta , hay colegas que ponen solo parte del código y lo que faltaba era más difícil de lograr al menos en mi caso.


Este código funciona perfecto para reescribir el propio ejecutable y reiniciar la aplicación abriendo el ejecutable nuevo suponiendo que el nuevo es D:\miexe.exe:
Código Delphi [-]
  MoveFile(PChar(ParamStr(0)), 'temporal.tmp');
  MoveFile('D:\miexe.exe', PChar(ParamStr(0)));
  ShellExecute(Handle,nil,('miexe.exe'),'','',SW_Shownormal);
 Application.Terminate;


con eso reescribo el exe y ya esta todo lo grado solo me falta poder buscar todos los ficheros necesarios para ejecutar la aplicacion y meterla en un instalador
gracias juank

Casimiro Notevi 02-01-2016 19:45:24

Bien, aunque no entiendo el problema, ¿qué tiene que ver el debug?

juank1971 02-01-2016 20:23:16

me imagine que no entendías, el debug no tiene nada que ver es que solo pensé que poniendo debug me ponía en la carpeta debug todo lo que necesitaba pero no fue así.

En resumen lo que quiero es:
poniendo link whith runtime packeges en true en las opciones del proyecto
y marcando Release en lugar de debug que es como más pequeño logro el exe.
Quiero copiar todo lo que necesite mi proyecto para una carpeta y distribuir ese exe pequeño con todo lo que necesito en un instalador y cuando haga alguna modificación actualizar solamente el exe.
Eso es lo que quiero hacer .

Casimiro Notevi 02-01-2016 20:26:15

Ah, bien, pues entonces tendrás el .exe y los .bpl por separado.
Cuando modifiques el exe ya no es necesario enviar los bpl.

juank1971 02-01-2016 20:33:00

si eso mismo es lo que quiero lo que no logro es tener los pbl que necesito se me ocurre ahora buscando el dependency walker que me dice los bpl que necesita mi aplicacion
ese programa me da una lista de todos los bpl que uso y la ubicacion, ahora deja ver que invento para lograr copiar todos porque son muchos aun mismo lugar

Casimiro Notevi 02-01-2016 20:51:53

Bueno, no te hace falta un programa externo para ver las BPL que usas, ya que estarán en el directorio del programa.

juank1971 02-01-2016 21:03:16

no, lo que tengo en el directorio del programa son las dcu, los bpl no estan ahi.

que cuando marcas {link whith runtime packeges} a true y Release en lugar de debug te hace un exe pequeño y necesitas los bpl para que funcione en cualquier pc con las dcu no me funciona.



Casimiro Notevi 02-01-2016 21:16:03

No sé si cambia con la versión de delphi que uses, o si es configurable, pero de todas formas, haz una simple búsqueda :)

juank1971 02-01-2016 22:16:07

ok gracias por tu tiempo feliz 2016

Casimiro Notevi 02-01-2016 22:24:57

Entonces, ¿has encontrado ya las bpl?

juank1971 02-01-2016 23:06:42

si lo encontre todo con el dependency walker copie todas las dependencias o mejor dicho los caminos a ellas a un tmemo y con un programa en delphi copi todo los ficheros de esos caminos bpl a una sola carpeta luego le puse el ejecutable dentro y funciona en cualquier pc

gracias

juank1971 07-01-2016 17:34:55

resumen
 
Finalmente quisiera resumir lo que necesitaba y la solución para futuros lectores.
No se si es la mejor solución debe haber otra mejor.



El problema es hacer un instalador que tenga un ejecutable muy pequeño en mi caso menos de 1mb para distribuirlo a varios clientes y con un botón dentro de la aplicacion actualizar y descargar de un ftp solamente ese ejecutable pequeño no los demas dll y pbl.

Para que salga pequeño el ejecutable en el Delphi XE6 en mi caso en Project/options/packages/runtime packages marcar a true la opción “Link whith runtime packages” esto saca del ejecutable todos los dpl usados y deja el exe muy pequeño, otro recurso que use y me redujo aún más el ejecutable es en el Porject Manager en la opción build Configuration escoger “Release”.
Luego resta saber que bpl estoy usando con ese .exe para poder copiarlas a una car[eta y distribuirlas en el instalador. Eso lo logré con el programa recomendado por este foro creo llamado Dependency Walker le doy copiar a todos los caminos que me encuentra de los bpl usados y en un sencillo programita en Delphi que hice pego esos caminos en un tmemo y con un botón copio todas esas pbl a una misma carpeta que finalmente al copiarle dentro de la misma el ejecutable pequeño funciona perfectamente. Luego al actualizar solo el ejecutable sigue funcionando todo como antes.

Espero le sirva a alguien . saludos Juank

xalo 08-01-2016 12:30:04

No se si lo conoces o se ha nombrado,pero upx.sourceforge.net[] es una forma simple y rápida de reduir el ejecutable. A parte de lo que mencionaste, lógicamente.


La franja horaria es GMT +2. Ahora son las 17:46:22.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi