Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Crear Claves de registro con InnoSetup (https://www.clubdelphi.com/foros/showthread.php?t=36567)

FGarcia 17-10-2006 03:32:52

Crear Claves de registro con InnoSetup
 
Saludos a todos !

Con este programa de consola al ejecutarlo me escribe una clave de registro para ejecutar mi aplicacion al iniciar Windows, lo he prbado con XP Home y funciona OK.

Código Delphi [-]
program Iniciar;
{$APPTYPE CONSOLE}
uses
  SysUtils, Registry, Windows;
var
  reg: TRegistry;
begin
  { TODO -oUser -cConsole Main : Insert code here }
  reg:= TRegistry.Create;
  //HKEY_LOCAL_MACHINE para cualquier usuario
  reg.RootKey := HKEY_LOCAL_MACHINE;
  reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run', True);
  reg.WriteString('Mi_Programa','C:\Archivos de Programa\GalaSys\Programa.exe');
  reg.CloseKey;
  freeandnil(reg);
end.

mis preguntas son dos:

1. Como ejecutar este programa desde el instalador (Inno Setup). Es decir que al terminar la instalacion o en algun momento de la misma se ejecute esta aplicacion para crear la clave del registro (¿crear? lo correcto seria añadir o ¿no? pues la clave ya esta creada solo añado una entrada a la misma) Por supuesto transparente al usuario.

2. Inno setup trae un ejemplo donde elimina las entradas de registro que se crearon durante la instalacion de determinado programa, pero no trae un ejemplo de si el puede crear dichas entradas directamente sin usar un programa como el que menciono.

Se agradece la ayuda!!

roman 17-10-2006 05:43:53

1. No es necesario contestar porque:

2. No sé a qué ejemplo te refieras pero el mismo debe servirte porque no hay una parte especial para borrar entradas del registro sino para crearlas, con la posiblidad de indicar que se borre la entrada al momento de desinstalar la aplicación.

Así, para el ejemplo que pones debería bastar:

Código Delphi [-]
[Registry]
Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\Run"; ValueType: string; ValueName: "Mi_Programa"; ValueData: "{app}\Programa.exe";

Nota que en lugar de poner "C:\Archivos de Programa\GalaSys\Programa.exe" es mejor especificar {app} que siempre se referirá a la carpeta donde se instala el programa, que no necesariamente será la que pongas por defecto.

Con eso se crea la clave al momento de la instalación. Si quieres que se borre al desinstalar basta que añadas al final de la línea anterior:

Código:

Flags: uninsdeletevalue
// Saludos

FGarcia 17-10-2006 06:00:59

Gracias Roman!

De hecho al momento de escribir este mensaje ya lo habia solucionado (Claro! previo "borrado no intencional de la clave "Software\Microsoft\Windows\CurrentVersion\Run" y todo lo que tenia bajo ella :D ), aunque no habia entendido el uso del "Flags: uninsdeletevalue"
yo lo habia solucionado asi:

Código Delphi [-]
[Registry]
Root: HKLM; Subkey: Software\Microsoft\Windows\CurrentVersion\Run; ValueType: string; ValueName: WinTrapp; ValueData: {app}\WinTrapp.exe; Flags: createvalueifdoesntexist; Tasks: ; Languages: 
Root: HKLM; Subkey: Software\Microsoft\Windows\CurrentVersion\Run; ValueType: string; ValueName: WinTrapp; ValueData: {app}\WinTrapp.exe; Flags: uninsdeletevalue

Lo corregire a la manera que me muestras que es mas simple.

Muchas Gracias!;)


La franja horaria es GMT +2. Ahora son las 08:33:40.

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