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 20-12-2006
Paz Paz is offline
Registrado
 
Registrado: dic 2006
Posts: 2
Poder: 0
Paz Va por buen camino
Talking Instalable con contraseña?

Hola, tengo un problema que no se como solucionar xq es la primera vez que voy a hacer un instalable. Mi aplicación está ya hecha en delphi7. Imaginad que la aplicación es solamante un form con dos buttons (BotonUsuario, BotonAvanzado). El instalable lo estoy haciendo con InstallSheild Express. Realmente lo que necesito es que, al estar instalando la aplicación el usuario puede seleccionar entre dos setup type (usuario, avanzado). Si se selecciona 'usuario', en la aplicación que se instale, solo deberá estar visible el botonUsuario. Si se selecciona 'Avanzado', entonces durante la instalación se tendrá que pedir una contraseña, validar la contraseña y si es correcta se instalará la aplicación con los dos botones (botonUsuario,botonAvanzado) visibles.

He visto en installshield en Dialogs la opcion de pedir un serialnumber pero no sería exactamente lo que necesito xq ade+ la contraseña solo la tendría que solicitar en el caso de 'setup type: avanzado'.
Aquí perdonad mi ignorancia, pero una vez tengo los dos setup type y al instalar el usuario selecciona uno de ellos, para que la aplicación sepa que tipo de instalación se ha realizado, se usa algún fichero tipo .ini?

Estoy bastante verde en esta parte así que agradeceré cualquier sugerencia o comentario.

Muchas gracias a todos.
Responder Con Cita
  #2  
Antiguo 20-12-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Bienvenida a los foros Paz (uso el femenino por el nick, si me equivoco, perdone usted).

Supongo que tu programa hará algo más que tener dos botones, ¿usas Bases de datos, cual? (componentes de acceso, etc).

Si no usas nada ajeno a Delphi, puede que incluso no necesites hacer el instalador, simplemente pueda funcionar directamente. Al arrancar el programa haces la pregunta al usuario y desde delphi validas todo (no necesitarías el installShield).

Para ver si funciona en otros windows, existe el vmWare (permite instalar varios S.O. de forma virtual, muy útil para estos casos).

Si quieres hacer el instalador (por ser más profesional o crear los accesos directos, el menú,etc) lamento no poder ayudarte; cuaendo lo he ncesitado he usado InnoSetup, (que es gratis y muy potente).

Usando uno u otro instalador, lo más sieguro sería dstribuir en dicho instalador 2 programas, el que tiene visible solo un botón y el que tiene ambos.En muchos casos se puede utilizar un solo ejecutable, de tal forma que el instalador escribe en un .ini o en el registro de windows el valor Modo = novato / profesional, pero en este caso sería muy fácil para un usuario avispado instalar la versión novato, modificar ese .ini y ponerlo en profesional.

Otra opción sería encriptar la contraseña y guardar el par:
Código:
Modo = avanzado
pass = "·$%"$&·%/
así se hace más difícil identificarla, pero siempre se podría copiar ese archivo desde una instalación "profesional" y pegarlo en un PC con la instalación novata, "hackeando" de esta forma la instalación.

Como ves no son pocas las pegas que pueden ocurrir. La solución puede venir según quieras más o menos "seguridad" en el programa.

Por otra parte estaría el tema de la contraseña en sí misma:
- El instalador ha de conectarse a internet para validar la contraseña.
- Se hace en base a una serie de contraseñas fijas incluidas en el propio instalador/programa.
- Se escribe un correo electrónico pidiendo una contraseña.

Soluciones hay muchas, a ver si te gusta alguna....

saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 20-12-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Vaya, me lié a teclear código y parece que Lepe se me adelanto

Bueno, yo no estoy muy familiarizado con el funcionamiento del Installshield, pero se me ocurre otra forma de hacerlo. La primera vez que se ejecuta el programa, pide que se escoja entre "usuario" y "avanzado". Esto lo dejamos grabado, y ya no lo preguntamos mas veces. Algo así:

La función "SoyAvanzado" devuelve TRUE si el usuario es avanzado, y si el usuario no se había decidido anteriormente entre una de las 2 modalidades, le da la opción de escoger. Colocala en un punto adecuado de tu programa, por ejemplo en el OnCreate del formulario principal.
Código Delphi [-]
uses Registry;

const
  Clave = '1234';

function SoyAvanzado: Boolean;
var
  Str: String;
begin
  Result:= FALSE;
  with TRegistry.Create do
  try
    RootKey:= HKEY_CURRENT_USER;
    if OpenKey('\Software\TuAplicacion',TRUE) then
    begin
      Str:= EmptyStr;
      if ValueExists('Clave') then
        Str:= ReadString('Clave');
      if Str = EmptyStr then
       case MessageBox(0,'¿Eres avanzado?','Usuario',
          MB_YESNOCANCEL or MB_ICONQUESTION or MB_TASKMODAL) of
         IDYES:
           begin
             Str:= InputBox('Usuario','Introduce la clave',EmptyStr);
             if AnsiSameText(Str,Clave) then
               WriteString('Clave',Str)
             else
               ShowMessage('La clave no es correcta, la aplicacion se iniciara como usuario');
           end;
         IDNO:
           begin
             Str:= 'Usuario';
             WriteString('Clave','Usuario');
           end;
         IDCANCEL:
           ShowMessage('La aplicacion se iniciara como usuario');
       end;
      if AnsiSameText(Str,Clave) then
        Result:= TRUE;
      CloseKey;
    end;
  finally
    Free;
  end;
end;

Por ejemplo:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  BotonAvanzado.Enabled:= SoyAvanzado;
end;

Última edición por seoane fecha: 20-12-2006 a las 12:54:31.
Responder Con Cita
  #4  
Antiguo 27-12-2006
Paz Paz is offline
Registrado
 
Registrado: dic 2006
Posts: 2
Poder: 0
Paz Va por buen camino
Gracias

Gracias por vuestras respuestas. Siento tardar tanto en responder pero he estado muy liada. Como dice ‘Lepe’, mi programa hace algo + q tener dos botones (jaaajaaa) pero para simplificar mi duda puse un ejemplo sencillo. Al final he hecho lo siguiente: Como me dijo ‘Lepe’ voy a acceder desde el instalador a dos ejecutables y en el caso que el ejecutable sea el correspondiente al modo ‘Usuario Avanzado’ entonces voy a usar la idea de ‘Seoane’. Así que gracias a los dos xq con las ideas de los dos he resuelto lo que quería. Aaah! Se me olvidaba, como mi programa no usa Base de Datos no haría falta usar un instalador, verdad?, mi única duda es que al usar la Librería Rx, podría tener algún problema si no hago un instalable?

Muchas Gracias y………Feliz Navidad y esas cosas..jeje
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
Como creo un instalable? miguelml Varios 1 21-05-2006 17:10:15
Problema Con Instalable LAUBLAFO Varios 0 26-05-2005 13:52:00
Generar instalable Dayvis Varios 1 22-10-2004 10:00:31
generando instalable vetustas Varios 3 17-12-2003 10:29:00
Hacer un Instalable aleidania Varios 2 12-07-2003 22:43:31


La franja horaria es GMT +2. Ahora son las 18:47:47.


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