Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-05-2012
Furyxe Furyxe is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 34
Poder: 0
Furyxe Va por buen camino
Problema al ejecutar archivo

Buenas a todos.

Estoy intentando, desde un programa delphi, realizar una instalacion de 4 programas, de manera automatica.
Ya he realizado los instaladores en modo silencioso. Pero por alguna razon no se abren desde mi programa delphi.

Mas explicado:
Cuando yo a mi instalador le doy doble click con el raton, el instalador se ejecuta minimizado, realiza sus operaciones y desaparece.
Cuando desde delphi yo uso "ShellExecute", "WinExec", "createProcess" entre otros, el instalador hace el "intento" de abrir, pero se cierra de inmediato sin realizar ninguna operación.

Llevo varias horas comiendome la cabeza, pero no se el por que no se abre. Cabe afirmar, que si se abren otros procesos como la calculadora de windows. Asi que he llegado a pensar que es culpa del instalador, pero entonces vuelvo a lo mismo, si lo ejecuto manualmente si funciona.

un ejemplo del uso:
ShellExecute(Handle, 'open', PWideChar('.\Instaladores\Enemy-Territory.exe'),
nil, nil, SW_SHOWNORMAL);


Alguna idea?, solo me falta esta parte para tener una de las partes mas tediosas de mi programa acabado, y solo me faltaria darle soporte a varios idiomas.

Gracias, y Saludos
Responder Con Cita
  #2  
Antiguo 07-05-2012
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Prueba a usar rutas absolutas en lugar de rutas relativas. Más o menos algo como esto:

Código Delphi [-]
var
  exePath : string;
  rootDir : string;
begin
  // Ruta del directorio de nuestra aplicación
  rootDir := ExtractFilePath( ParamStr( 0 ) );

  // Ruta del ejecutable de "Enemy-Territory"
  exePath := rootDir + 'Instaladores\Enemy-Territory.exe';

  if FileExists( exePath ) then
  begin
    ShellExecute
    (
      Self.Handle,
      'open',
      PChar( exePath ),
      nil,
      nil,
      SW_SHOWNORMAL
    );
  end
  else
  begin
    raise EInOutError.CreateFmt
    (
      'El ejecutable "%s" no está donde debe',
      [ exePath ]
    );
  end;
end;
Responder Con Cita
  #3  
Antiguo 07-05-2012
Furyxe Furyxe is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 34
Poder: 0
Furyxe Va por buen camino
Gracias por la respuesta tan rapida

Por desgracia, ya habia intentado el tema de las rutas absolutas, aun asi he vuelto a intentarlo con tu codigo facilitado, y el resultado es el mismo. El hecho no esta en que no se abre. Sino en que intenta abrirse, sale el icono en la barra, pero se cierra automaticamente por alguna razon.
Responder Con Cita
  #4  
Antiguo 07-05-2012
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Tal vez podrías echar un vistazo intentar averiguar de qué error se trata, luego de ejecutar la función "ShellExecute()". Sin embargo, me temo que el problema pueda venir el propio programa que se trata de instalar: tal vez no se "deje" instalar, ignoro porqué razón, pero si, como dices, el programa se ejecuta y se cierra... no sé hasta qué punto puedes controlarlo, puesto que se trata de un programa "externo". ¿Qué pasa si ejecutas el ejecutable tú mismo desde Windows? ¿Funciona bien?
Responder Con Cita
  #5  
Antiguo 07-05-2012
Furyxe Furyxe is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 34
Poder: 0
Furyxe Va por buen camino
Buenas.

Como digo arriba, el hecho es que si ejecuto manualmente desde windows si anda todo.

NOTA: SOLUCION ENCONTRADA PARCIALMENTE: Parece ser, no entiendo por que, si creo un acceso directo de los archivos que quiero abrir, y ejecuto el acceso directo en vez del archivo directamente, si funciona...

No le veo logica al por que funciona con el acceso directo, pero no con el archivo directamente. Y aunque el problema en si este solucionado de una manera chapucera, me gustaria que si es posible, encontremos la razon de este comportamiento ^^
Responder Con Cita
  #6  
Antiguo 07-05-2012
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Hace poco implementé cierta función en un programa que comprobaba quién era su "padre", entiendo como padre quien lo había ejecutado: básicamente Windows u otro programa. De este modo, sería posible actuar de una manera u otra dependiendo de quién ejecute un programa: si es Windows, se sigue adelante, si no lo es, se termina su ejecución. No digo que este sea el caso, pero, sí quiero hacer ver que el comportamiento de un programa de terceros, puede hacer este tipo de cosas u otras que afecten a su ejecución. Esto tal vez podría mirarse (digo en el propio ejecutable, sin disponer de su código fuente), pero, me temo que yo no llego a tanto.

P.D. Intenta encontrar información sobre si el programa en cuestión acepta algún argumento o algo. Por lo demás, ¿esto te ocurre con uno de los programas o con todos ellos? Porque ya sería raro que todos coincidieran en el mismo "problema"... y tal vez estemos dando palos de ciego. ¿Tal vez usar algo como "CreateProcess" en lugar de "ShellExecute()"? ¿Has comprobado el resultado de la función "ShellExecute()"?
Responder Con Cita
  #7  
Antiguo 07-05-2012
Furyxe Furyxe is offline
Miembro
NULL
 
Registrado: jul 2011
Posts: 34
Poder: 0
Furyxe Va por buen camino
He usado ShellExecute, WinExec, y CreateProcess. Todos con el mismo error.

En cuanto al programa que quiero abrir, es un instalador que se abre en modo silencioso. El instalador lo he creado yo, con el programa "Setup Factory 9".

EDIT: Por cierto, lo que falla son solo los setup creados con el programa anterior, al intentar abrir otra aplicacion de windows, la abre correctamente. Y el setup no admite parametros, ya que lo hace todo de modo silencioso.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
problema al ejecutar accion al soltar archivo sobre aplicacion jonydread OOP 8 17-11-2011 17:14:50
¿Ejecutar Archivo? lKinGl Varios 9 16-04-2008 23:40:48
Ejecutar Archivo bat tertuliano Varios 7 12-03-2007 15:04:50
Ejecutar Archivo Diego9 API de Windows 2 24-01-2007 03:47:43
Ejecutar archivo .hlp ¥0n1 API de Windows 1 22-01-2004 19:36:14


La franja horaria es GMT +2. Ahora son las 16:35:42.


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
Copyright 1996-2007 Club Delphi