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 07-08-2007
Avatar de Io
[Io] Io is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: San Fernando (Cádiz)
Posts: 259
Poder: 19
Io Va por buen camino
Inno Setup

Saludos al Foro.

Hay va la pregunta.

Hay alguna forma de cambiar los parametros de instalación desde la sección [code]. Por ejemplo que por defecto salga como directorio de instalación un directorio que previamente he leido del registro.

Muchas Gracias.
Chao
Responder Con Cita
  #2  
Antiguo 07-08-2007
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,

No me termino de aclarar con las constantes y variables en InnoSetup, pero, mirando la descripción de la directiva que te interesa encuentro algo que lo mismo está pensado para lo que necesitas,... si no me equivoco, vamos:

Cita:
Empezado por Setup: DefaultDirName
Description:

The value of this required directive is used for the default directory name, which is used in the Select Destination Location page of the wizard. Normally it is prefixed by a directory constant.

If UsePreviousAppDir is yes (the default) and Setup finds a previous version of the same application is already installed, it will substitute the default directory name with the directory selected previously
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 07-08-2007
Avatar de Io
[Io] Io is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: San Fernando (Cádiz)
Posts: 259
Poder: 19
Io Va por buen camino
Hola Dec.
Gracias por tu respuesta. La verdad mi ingles es más bien escaso, pero con lo que me has respondido y un poco de verguenza torera, haber si saco algo en claro.

Chao
Responder Con Cita
  #4  
Antiguo 07-08-2007
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,

Básicamente las instalaciones de InnoSetup guardan una clave en el Registro de Windows que tiene que ver con la directiva "AppId" que podemos usar en el apartado "Setup". Si usas la directiva "UsePreviousAppDir" e InnoSetup detecta que tu aplicación (por su "AppId") ya fue instalada en el sistema... propondrá al usuario como directorio de instalación el directorio donde esté instalada la versión previa de tu aplicación.

Otra cosa es que algo así te sirva o qué.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 07-08-2007
Avatar de Io
[Io] Io is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: San Fernando (Cádiz)
Posts: 259
Poder: 19
Io Va por buen camino
Ok. entendido.


El problema es que la aplicación, ya está instalada a "pinrel", es decir... instalé el servidor Fb15 por un lado y la aplicación la copie en una carpeta por otro, y lo mismo hice con los clientes, instalé los clientes Fb por un lado y la aplicación la copie a mano. Eso si lo más estandarizado posible.

Y ahora ya me he metido a saco para crear un instalador que lo haga todo.
Pero mi primera preocupación o inquietud es hacer actualizaciones(el instaldor busca el programa en el registro y copia la nueva versión), por esto era mi pregunta.

De todas formas te agradezco la explicación, me ha quedado más claro la cosa.

Chao
Responder Con Cita
  #6  
Antiguo 08-08-2007
Avatar de Io
[Io] Io is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: San Fernando (Cádiz)
Posts: 259
Poder: 19
Io Va por buen camino
Pues parece que ya encontré la solución.

En la ayuda nos dice:

Cita:
The Pascal script can contain several functions which are called when Setup wants to know the value of a scripted {code:...} constant. The called function must have 1 String parameter named Param, and must return a String value.
The syntax of a {code:...} constant is: {code:FunctionName|Param}
  • FunctionName specifies the name of the Pascal script function.
  • Param specifies the string parameter to pass to the function. If you omit Param, an empty string will be passed.
  • If you wish to include a comma, vertical bar ("|"), or closing brace ("}") inside the constant, you must escape it via "%-encoding." Replace the character with a "%" character, followed by its two-digit hex code. A comma is "%2c", a vertical bar is "%7c", and a closing brace is "%7d". If you want to include an actual "%" character, use "%25".
  • Param may include constants. Note that you do not need to escape the closing brace of a constant as described above; that is only necessary when the closing brace is used elsewhere.
Example:
DefaultDirName={code:MyConst}\My Program
Here is an example of a [code] section containing the MyConst function used above.
[code]
function MyConst(Param: String): String;
begin
Result := ExpandConstant('{pf}');
end;
He probado este código y funciona:

Código:
[Setup]
AppName=Usuarios
AppVerName=Usuarios 1.0
AppPublisher=Rm&Monge@Galocha
AppPublisherURL=http://www.example.com/
AppSupportURL=http://www.example.com/
AppUpdatesURL=http://www.example.com/
DefaultDirName={code:GetDirect}
DefaultGroupName=Usuarios
OutputDir=C:\basura
OutputBaseFilename=Security_Setup
Compression=lzma
SolidCompression=yes

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

[Files]
Source: D:\PROYECTOS\Rota_SQL\seguridad\security.exe; DestDir: {code:GetDirect}; Flags: ignoreversion

[Icons]
Name: {group}\Usuarios; Filename: {app}\security.exe

[Run]
Filename: {app}\security.exe; Description: {cm:LaunchProgram,Usuarios}; Flags: nowait postinstall skipifsilent

[-code]

var
  Dir :string;

function InitializeSetup(): Boolean;
begin
  result:=True;
  Dir:='';
  if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\RM\ROTA_SQL\APLICACION','Path', Dir) then
    if Dir <> '' then
      Dir:=ExtractFilePath(Dir);
end;


function GetDirect( p :string):string;
begin
  if dir <>'' then
    result:=Dir
  else
    result:='c:\basura\usuarios';
end;

Bueno este código ha sido lo primero que me ha venido a la cabeza, pero la duda que tenía, se ha despejado.

Bueno Aquí queda dicho, por si le interesa a Alguien.

Chao.
Responder Con Cita
  #7  
Antiguo 08-08-2007
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,

Pues sí. Algo había leído sobre el asunto pero no me quedaba claro. Ahora con el ejemplo que has puesto me queda más claro y es probable que alguna vez necesite de hacer algo similar. Muchas gracias.
__________________
David Esperalta
www.decsoftutils.com
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
Instalador con Inno Setup jouls Varios 1 04-07-2007 21:12:03
problema con inno setup Choclito Varios 0 22-06-2006 18:27:42
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


La franja horaria es GMT +2. Ahora son las 09:01:29.


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