Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-10-2006
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
Wink Problemas con Inno Setup ,con alias y DBE

Tengo ya el inno setup , pero tengo dos dudas , una es cuando instalo , si esta el BDE Administrator , que no lo instale , es decir que detecte si esta y si no esta que lo instale y la otra es añadir los alias según el directorio donde instale el usuario el programa .

Mi programa tiene dos alias , que estan en dos carpetas distintas , dentro de donde está instalado el programa .

He mirado , en la web de Inno , aquí :

http://www.jrsoftware.org/iskb.php?bde

Me dice , que añada el programa Minireg.exe , pero claro no me explica , lo que he dicho yo , de instalar si esta o no esta el BDE .

En cuanto a los alias , te dice que añadas un programa realizado en Delphi , llamado AddAlias.exe , pero este programa , no te instala los alias en el lugar elegido por el usuario para instalar el programa . Además mi programa tiene dos alias , habría que ver como resuelvo este problema .

De todo lo que he dicho , lo que más me interesa , es instalar los alias .

Un saludo
Responder Con Cita
  #2  
Antiguo 10-10-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Bueno, según yo entiendo, usas AddAlias por cada alias que quieras instalar pasando como parámetro la ruta:

Código:
[run]
AddAlias mi_alias c:\ruta\al\directorio paradox
AddAlias mi_otro_alias c:\ruta\al\otro\directorio paradox
No lo he probado, pero imagino que en la sección [run] puedes hacer uso de las constantes de la instalación, tales como {app} (directorio de instalación):

Código:
[run]
AddAlias mi_alias {app}\subdirectorio\de\tablas paradox
// Saludos
Responder Con Cita
  #3  
Antiguo 10-10-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Mmm... La sintaxis es incorrecta. Sería más bien así:

Código:
[run]
Filename: "{tmp}\AddAlias.exe"; Parameters: """{app}\subdirectorio"""
// Saludos
Responder Con Cita
  #4  
Antiguo 12-10-2006
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
Cita:
Empezado por roman
Mmm... La sintaxis es incorrecta. Sería más bien así:

Código:
[run]
Filename: "{tmp}\AddAlias.exe"; Parameters: """{app}\subdirectorio"""
// Saludos
Pero con esta sintaxis , donde pongo los alias ?
Responder Con Cita
  #5  
Antiguo 12-10-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Acabo de probarlo y así me funciona:

Código:
[Run]
Filename: "{tmp}\AddAlias.exe"; Parameters: "mi_alias ""{app}\tablas"" PARADOX"
Observa las comillas alrededor de {app}\tablas. Si las omites parece que no funciona.

// Saludos
Responder Con Cita
  #6  
Antiguo 13-10-2006
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
No me sale , no sé donde esta el error , pero no me sale , pongo todo el código a ver si alguien ve donde este el error .

compila bien , instala el programa , pero no instala los alias .

Código Delphi [-]
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

[Setup]
AppName=Miprograma
AppVerName=Miprograma1.5
DefaultDirName={pf}\Miprograma
DefaultGroupName=Miprograma
DisableProgramGroupPage=yes
OutputDir=C:\My InstallShield Express Projects
OutputBaseFilename=Miprograma
SetupIconFile=C:\Miprograma.ico
Compression=lzma
SolidCompression=yes

[Languages]
Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]
Source: "C:\Miprograma\Miprograma.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\Miprograma\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "AddAlias.exe"; DestDir: "{tmp}"

; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: "{group}\Miprograma"; Filename: "{app}\Miprograma.exe"
Name: "{group}\{cm:UninstallProgram,Miprograma}"; Filename: "{uninstallexe}"
Name: "{userdesktop}\Miprograma"; Filename: "{app}\Miprograma.exe"; Tasks: desktopicon

[Run]
Filename: "{app}\Miprograma.exe"; Description: "{cm:LaunchProgram,Miprograma}"; Flags: nowait postinstall skipifsilent
Filename: "{tmp}\AddAlias.exe"; Parameters: "alias1""{app}""PARADOX"
Filename: "{tmp}\AddAlias.exe"; Parameters: "alias2""{app}\tablas""PARADOX"
Responder Con Cita
  #7  
Antiguo 13-10-2006
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
Ya me sale , habia que poner un poco de espacio entre las comillas , las que estan detras de cada alias y un espacio delante de la palabra PARADOX.

Código Delphi [-]
Filename: "{tmp}\AddAlias.exe"; Parameters: "alias1 ""{app}"" PARADOX"
Filename: "{tmp}\AddAlias.exe"; Parameters: "alias2 ""{app}\tablas"" PARADOX"

Ya sé que este programa es gratis , pero por dejar un pequeño espacio dentro de unas comillas , no deberia de ser motivo para que no funcione una aplicación , me he estado toda la tarde dandole vueltas por este aparentemente insignificante detalle .

Otro detalle de la aplicación , es que no desinstala los alias , al desinstalar el programa , y si desinstala el programa y lo instalas de nuevo , en otro directorio , pues no te actualiza la ruta de los alias .
Responder Con Cita
  #8  
Antiguo 13-10-2006
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Otra opción que tienes es la siguiente:

Cita:
[Run]
Filename: "{app}\AddAlias.exe"; Parameters: "MIBASE {app}\tables PARADOX"
Sin tantas comillas, recuerda que estas pasando parametros en la linea de comandos.

Cita:
Empezado por David
Otro detalle de la aplicación , es que no desinstala los alias , al desinstalar el programa , y si desinstala el programa y lo instalas de nuevo , en otro directorio , pues no te actualiza la ruta de los alias
Pues si se puede borrar agregando un signo - al Alias

Cita:
Filename: "{app}\AddAlias.exe"; Parameters: "-MIBASE"
Y también hay que modificar el programa AddAlias.

Aqui pego la modificación

Código Delphi [-]
 
  DbiInit(nil);
  try
    if FDelete then
      try
        DbiDeleteAlias(nil, PChar(GAlias));
      except
      end
    else // Este else no esta en el original.
      try
        DbiAddAlias(nil, PChar(StrToOem(GAlias)),
                         PChar(StrToOem(FDrvName)),
                         PChar(FParams), True);
        DbiCfgSave(nil, nil, True);
      except
      end;
  finally
    DbiExit();
  end;

Saludos
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #9  
Antiguo 13-10-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por egostar
Sin tantas comillas, recuerda que estas pasando parametros en la linea de comandos.
Las comillas son necesarias porque la ruta {app} pudiera tener espacios (como en C:\Archivos de programa\Mi App). Justamente por eso es que el espacio que menciona David no es una cuestión del InnoSetup sino de como se pasan los parámetros a un ejecutable en Windows.

Muy buena la adición de cómo borrar alias. No estoy seguro, pero me parece que InnoSetupo permite especificar que eso se ejecuta al desinstalar el programa, ¿es así?

// Saludos
Responder Con Cita
  #10  
Antiguo 13-10-2006
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Se me pasó, tambien puedes hacer que se ejecute cuando desinstalas la aplicación usando lo siguiente:

Cita:
[UninstallRun]
Filename: Addalias.exe; Parameters: "-MIBASE"
Saludos.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #11  
Antiguo 13-10-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¡Ah! Pues con esto ya queda bien redondito Creo que este hilo es el hilo a citar para futuras referencias respecto a la instalación del BDE.

// Saludos
Responder Con Cita
  #12  
Antiguo 13-10-2006
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por roman
Las comillas son necesarias porque la ruta {app} pudiera tener espacios (como en C:\Archivos de programa\Mi App). Justamente por eso es que el espacio que menciona David no es una cuestión del InnoSetup sino de como se pasan los parámetros a un ejecutable en Windows.
Creo que tienes razón, yo normalmente no uso directorios con espacios, buen punto.

Otra cosa que les recomiendo es usar otra herramienta que va de la mano con InnoSetup y se llama ISTool

Te crea el mismo archivo que usa InnoSetup pero desde una interfaz gráfica.

Saludos.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #13  
Antiguo 14-10-2006
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por David
Me dice , que añada el programa Minireg.exe , pero claro no me explica , lo que he dicho yo , de instalar si esta o no esta el BDE .
Para complementar este tema y evitar que se instale de nuevo el BDE si ya existe, modifique el programa MiniReg de Jordan Russell agregando lo siguiente:

Código Delphi [-]
 
{ MiniReg v1.0 by Jordan Russell
  Note: For Delphi 3+, you'll need to change "OLE2" below to "ActiveX". }
uses
  Windows, ActiveX,BDE; // BDE para usar la función dbiInit
 
var
  BDECheck : Bool;
 
{x$R *.RES}
 
.......
.......
 
begin
  if ParamCount <> 1 then
     Exit;
  BDECheck := (dbiInit(nil) = 0);  //Aqui verifico si existe BDE, 
                                            //Esta idea la tomé de Trucomanía
  If BDECheck = false then begin  //Actúo en consecuencia
     CoInitialize (nil);
     try
       RegisterServer (ParamStr(1));
     finally
       CoUninitialize;
     end;
  end;
end;

Saludos.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #14  
Antiguo 15-10-2006
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
No me desinstala los alias :

si pongo esto , después de poner el else en el programa AddAlias como dice egostar :

Código Delphi [-]
[Run]
Filename: "{app}\Miprograma.exe"; Description: "{cm:LaunchProgram,Miprorgrama}"; Flags: nowait postinstall skipifsilent
Filename: "{tmp}\AddAlias.exe"; Parameters: "-Alias1 ""{app}"" PARADOX"
Filename: "{tmp}\AddAlias.exe"; Parameters: "-Alias2 ""{app}\tablas"" PARADOX"

Al poner - delante del alias , ni siquiere me instala los alias .

Si pongo esto , con el AddAlias original , y en la sección [Run] lo que he puesto arriba pero sin el signo - delante del alias , me instala los alias , pero no me lo desinstala .

Código Delphi [-]
[UninstallRun]
Filename: "{tmp}\AddAlias.exe"; Parameters: "-Alias1 ""{app}"" PARADOX"
Filename: "{tmp}\AddAlias.exe"; Parameters: "-Alias2 ""{app}\tablas""

Y por otra parte , según dicen en la nueva versión de Inno setup , yo no puedes poner un icono de desinstalación , el comando UninstallIconFile , ya no funciona , queda muy mal , ir a inicio , programas y ver que el icono del programa y el desinstalación es el mismo .
Responder Con Cita
  #15  
Antiguo 15-10-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Cita:
Empezado por David
Y por otra parte , según dicen en la nueva versión de Inno setup , yo no puedes poner un icono de desinstalación , el comando UninstallIconFile , ya no funciona , queda muy mal , ir a inicio , programas y ver que el icono del programa y el desinstalación es el mismo .
Yo lo veo muy útil, se supone que estas en la ventana de "Desinstalar Programas", el hecho de ver un icono distinto desconcierta un poco, ya que tienes que leer el nombre para saber el programa que quieres desinstalar. Al ver el mismo icono de tu aplicación, lo localizas más rápido.

... Aunque sobre gustos no hay nada escrito .

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #16  
Antiguo 15-10-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Lepe
se supone que estas en la ventana de "Desinstalar Programas"
No necesariamente. Creo que David se refiere al icono que se coloca en el menú inicio:

Inicio|Programas|Tu Aplicación

Ahí es donde resulta confuso.

En cuanto a por qué no funciona la desinstalación de alias hay que considerar dos puntos:

1. Tal como está no sirve porque AddAlias.exe se copia al directorio {tmp} y todo lo que está ahí se borra al final de la instalación. Debe entonces copiarse a algún otro drectorio, por ejemplo {app} o {app}\bin.

2. Revisando el código fuente de AddAlias veo que el signo - antes del nombre del alias no hace lo que estamos pensando.

Cita:
Empezado por código fuente de AddAlias
Código:
   1: Name of alias
      if begins with '-' then delete first if exist
                         else do nothing if exist
Es decir, el alias de cualquier forma se agrega, sólo que si ya existe un alias con ese nombre, se borra antes.

Podría modificarse el programa para que sólo borre el alias, pero creo que yo lo que haría para matener las cosas separadas es crear un segundo programa DeleteAlias que sólo borre alias. Este DeleteAlias es el que se copiaría a {app}.

Le queda de tarea a David

// Saludos
Responder Con Cita
  #17  
Antiguo 15-10-2006
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
A mi si esta y lo borra me viene perfecto , aunque luego lo instale .

Pero es que si pongo el signo - , como he dicho , es que no hace nada de nada .

Por que la única utilidad para desinstalar los alias es la siguiente . Cuando te instala el programa ,te instala los alias en el directorio donde esta la aplicación , si desinstalas , y no quitas los alias (el usuario no sabe hacerlo ) , luego instalas y si eliges otro directorio , los alias apuntan al directorio inicial , y el programa no funciona .

Por lo que si al instalar , encuentra los alias , los borrra y luego los escribe en la dirección correcta , estaria bien por mi parte .

Pero reitero , si pongo el signo - , como he explicado que he hecho , no hace nada de nada .
Responder Con Cita
  #18  
Antiguo 15-10-2006
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
Cita:
Empezado por roman
No necesariamente. Creo que David se refiere al icono que se coloca en el menú inicio:

Inicio|Programas|Tu Aplicación

Ahí es donde resulta confuso.
Ahí es donde digo , el icono del programa y el de desinstalación es el mismo . Y además primero te sale el de desintalación y luego el del programa . No es que sea un detalle muy importante , pero prefiero tener primero el icono del programa y luego otro dinstinto y debajo el de desinstalar.
Responder Con Cita
  #19  
Antiguo 15-10-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Bueno, quizás y solo quizás, no se deba poner el icono de desintalación tan a mano de usuarios inexpertos, y por esa razón, no debe ponerse en inico -> Programas (alguna vez le he dado sin querer )

Nero 6, Office, incluso BDS 2006 no traen los iconos de desinstalar en inicio -> programas.

El hecho de hacer un programa para añadir alias y otro para borrar, me parece demasiado, yo al menos cambiaría el nombre del programa "AddAlias" por "AliasManager" con una linea de comando:

AliasManager /add MiAlias
AliasManager /del Mialias
AliasManager /h
AliasManager /help
AliasManager /?

Las 3 últimas muestran un mensaje con los parámetros que se pueden usar y qué hace cada uno.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #20  
Antiguo 17-10-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Regresando a lo del icono para desinstalar:

Si se quiere cambiar el icono que aparece en la ventana "Agregar o quitar programas" basta usar la opción UninstallDisplayIcon en la sección [Setup]. De hecho, también puede cambiarse el texto que aparece usando UninstallDisplayName:

Código Delphi [-]
[Setup]
...
UninstallDisplayIcon={app}\eliminar.ico
UninstallDisplayName="¡¡Quita ya esta cosa de mi sistema!!"
...

También puede usarse una librería de iconos o un exe o dll. En tal caso se puede especificar el índice del icono que se quiera usar. Por ejemplo:

Código Delphi [-]
[Setup]
...
UninstallDisplayIcon={sys}\shell32.dll,31
...

hará que aparezca el icono número 31 de la librería shell32.dll (que resulta ser el icono de la papelera).

Por otra parte, también puede cambiarse el icono que usemos en el menú de Inicio para acceso directo al desinstalador. De hecho, como con cualquier otro icono de acceso directo, puede usarse uno distinto del de la aplicación destino. Para ello hay que usar la directiva IconFileName y opcionalmente IconIndex. Por ejemplo:

Código Delphi [-]
[Icons]
Name: "{group}\Quitar programa"; Filename: "{uninstallexe}"; IconFilename: "eliminar.ico"

para usar un icono fijo, o bien

Código Delphi [-]
[Icons]
Name: "{group}\Quitar programa"; Filename: "{uninstallexe}"; IconFilename: "{sys}\shell32.dll"; IconIndex: 31

Coincido con Lepe en que en la ventana "Agregar o quitar programas" conviene usar el mismo icono que el de la aplicación para poder distinguirlo rápidamente. Pero en el menú Inicio, usar un icono distinto evitará que accidentalmente desisntalemos la aplicación.

// Saludos

Última edición por roman fecha: 17-10-2006 a las 23:08:05.
Responder Con Cita
Respuesta



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
inno setup 5 Cosgaya Varios 0 10-01-2006 13:09:38
Inno Setup Ini? marceloalegre Varios 2 07-12-2005 20:49:17
Inno Setup tarco35 Varios 0 09-04-2005 16:48:01
Mas funcionalidad con Inno Setup alt126 Varios 3 20-12-2004 12:58:03
Script de Inno Setup muli Varios 1 11-09-2003 20:12:04


La franja horaria es GMT +2. Ahora son las 07:25:51.


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