Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Extraño problema al ejecutar mi aplicación desde "Archivos de programa" (https://www.clubdelphi.com/foros/showthread.php?t=91153)

lago 20-11-2016 21:26:15

Extraño problema al ejecutar mi aplicación desde "Archivos de programa"
 
Hola a todos, agradecería un poco de ayuda por favor! no entiendo nada... os comento:

He hecho un programa con XE7, todo funciona bien, cojo sus .dll's y sus archivos de configuración junto con su .exe y lo copio en una carpeta en el escritorio listo para empaquetar... lo ejecuto y perfecto... PERO ... si lo copio a C:\Archivos de programa, o C:\Archivos de programa (x86) al ejecutarlo se arranca en segundo plano... y después de un rato se abre.... (??)

El programa no requiere privilegios de administrador para usarse, al arrancarlo desde cualquier otro lado que no se las carpetas de sistema funciona bien, si no segundo plano... me tiene loco, no entiendo que puede pasar...

He creado otros proyectos de 32 y 64 bits con un par de formularios, los he compilado y los he copiado a mano a C:\Archivos de programa y si arrancan bien...

¿Alguien sabe donde he podido meter la pata?

Muchisimas gracias por vuestra atención

Un saludo

Jorge.

Snaked 20-11-2016 22:01:43

hola jorge

A veces el sistema, se vuelve inestable y "sucio" y pasan cosas extrañas en el funcionamiento.... has probado a REINICIAR el PC con un arranque en LIMPIO y ver como se comporta el programa?? has probado a darle privilegios de Administrador en las PROPIEDADES del programa???

Tambien puede ser que se haya corrompido el proyecto o algo en el compilador.....si ves que no lo solucionas, copia los cpp y los hpp y prueba a crear de nuevo la aplicacion y luego le copias los ficheros cpp y hpp y forms en donde hayas creado el proyecto nuevo.....yo a veces he tenido que hacer eso con proyectos que funcionaban mal

dec 21-11-2016 09:19:25

Hola,

Si hablas de "archivos de configuración" entonces es probable que dichos archivos sean leídos y también escritos desde tu programa. Ahora bien, no podemos escribir archivos en carpetas como "Archivos de programa", sino que dichos archivos de configuración deberían situarse en directorios como "AppData", por ejemplo. Puedes buscar más información sobre directorios "especiales". La unidad "SHFolder.pas" te ofrece la posibilidad de obtener sus rutas. La cosa es que deberías ver algún error al tratar de escribir en un archivo dentro de "archivos de programa", pero, también puede ser que tu programa esté evitando mostrar este tipo de errores. En todo caso piensa en lo dicho: los archivos de configuración han de situarse fuera de "Archivos de programa".

lago 21-11-2016 11:38:26

Hola!, muchas gracias por vuestras respuestas, Snaked
Cita:

A veces el sistema, se vuelve inestable y "sucio" y pasan cosas extrañas en el funcionamiento.... has probado a REINICIAR el PC con un arranque en LIMPIO y ver como se comporta el programa?? has probado a darle privilegios de Administrador en las PROPIEDADES del programa???
Si, como administrador arranca bien desde Archivos de programa

Cita:

Tambien puede ser que se haya corrompido el proyecto o algo en el compilador.....si ves que no lo solucionas, copia los cpp y los hpp y prueba a crear de nuevo la aplicacion y luego le copias los ficheros cpp y hpp y forms en donde hayas creado el proyecto nuevo.....yo a veces he tenido que hacer eso con proyectos que funcionaban mal
Eso pensaba hacer hoy a ver si algo falló...

Dec
Cita:

Si hablas de "archivos de configuración" entonces es probable que dichos archivos sean leídos y también escritos desde tu programa. Ahora bien, no podemos escribir archivos en carpetas como "Archivos de programa", sino que dichos archivos de configuración deberían situarse en directorios como "AppData", por ejemplo. Puedes buscar más información sobre directorios "especiales". La unidad "SHFolder.pas" te ofrece la posibilidad de obtener sus rutas. La cosa es que deberías ver algún error al tratar de escribir en un archivo dentro de "archivos de programa", pero, también puede ser que tu programa esté evitando mostrar este tipo de errores. En todo caso piensa en lo dicho: los archivos de configuración han de situarse fuera de "Archivos de programa".
Efectivamente, tengo un fichero de configuración que leo, pero no escribo al arrancar el programa. Lo que me extraña es que el programa no de ningún error, de hecho a los 2 o 3 minutos termina por ejecutarse... algo que me desconcierta mil... el programa aparece en la lista de tareas como en segundo plano... igualmente voy a hacer lo que me dices y escribir la configuración fuera... tiene toda la pinta de ser algo del estilo...

Muchas gracias a los dos y un saludo! esta tarde me pongo a ello y os comento :)

Snaked 21-11-2016 15:59:08

hola jorge:

prueba tambien a darle a la opcion Project->CLEAN (tu proyecto) y volver a hacer el Make y el Build de nuevo.....

a veces los proyectos se "estropean" y tienes que volver a Create New Forms Application y reconstruirlo con un poco de copiar el codigo y funciones al nuevo archivo generado

Espero que lo soluciones..

Un Saludo

lago 21-11-2016 19:55:39

Nada... Snaked, he limpiado también pero nada...

He re-escrito la función que me devuelve las rutas del programa y demás y he añadido una condición según si el programa sera compilado como portable o no, utilizando GetHomePath(); que me devuelve la ruta al directorio de programa donde puedo escribir en sus configuraciones y demás.

El programa al ejecutarse desde Archivos de Programa\miprograma sigue haciendolo en segundo plano...

He creado un proyecto nuevo y he copiado los formularios y adaptado a ver si había algo "tocado" como decias Snaked... y nada, lo mismo...

Quizás tenga algo que ver con los ficheros RESOURCE? apenas guardo 5 imagenes png y 3 sonidos wav.... no se... me tiene frito... como administrador funciona bien ejecutandolo desde Archivos de Programa\miprograma , pero como usuario salta al segundo plano y adios...


Se os ocurre algo más?? muchas gracias por vuestra ayuda

Jorge.

Snaked 23-11-2016 00:04:24

se me ocurre que podrias utilizar el InstallExpress para crear un Setup de instalación y ver que resultado te da ya que lo instala en PROGRAMAS de Inicio y eso...quizas asi te funcione....

lago 23-11-2016 18:06:15

Snaked al hacer la instalación con el installshield fue cuando saltó la liebre de que algo le pasaba al programa... :)

Solucionado! pese a que modifiqué la función de lectura de configuración a la carpeta que decía dec, seguía teniendo ficheros de idioma en la carpeta de instalación donde el programa no escribe nada nunca.

El problema es que utilizaba la función "sqlite3_open" en la función de consultas a la base de datos. Dicha función abre el fichero para lectura/escritura y he ahí el error que me estaba dejando tonto... ahora uso "sqlite3_open_v2" que permite utilizar una flag "SQLITE_OPEN_READONLY" para que no abra el archivo en modo escritura... programa funcionando..

Muchas gracias por vuestra ayuda... he aprendido cosas interesantes sobre los nuevos windows y sus carpetas, la verdad es que en sistemas mono usuario y sin privilegios era más fácil programar :))

Un saludo!!

Jorge.


La franja horaria es GMT +2. Ahora son las 20:28:39.

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