Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=26)
-   -   Crear instalador de Stationery (https://www.clubdelphi.com/foros/showthread.php?t=48048)

BlueSteel 13-09-2007 23:34:07

Crear instalador de Stationery
 
Hola amigos

se que esta es una pregunta fuera del ambito de delphi.. pero toy con este cachito...y en una de esas tengo k hacer un programita en delhi pa' solucionarlo

necesito hacer un fondo de correo coorporativo para Outlook (el del office)... eso es fácil, incluso lo tengo echo...

mi problema es que necesito hacer un instalador de dicho fondo, manualmente se como hacerlo, pero tengo más de 40 estaciones, y me piden que el fondo de correo se modifique cada cierto tiempo.. y a esta altura estoy un poco complicado, eso de pasearme por todos los equipo... (me quita mucho tiempo)

entonces, lo que quiero hacer es lo sgte:

hacer un programa y ponerlo en un directorio compartido en la red... mandar un correo con un link a dicha ruta y que el programa me instale en forma automatica los archivos..,es decir me copie lor archivos en en Pc del Usuario en cierta ruta (serán distinta para cada usuario y computador), al menos la ruta del usuario...

Ej. Pc1

C:\Documents and Settings\Usuario1\Datos de Programa\Microsoft\Diseño de Fondo\Fondo1.html

Ej. Pc2
C:\Documents and Settings\Usuario2\Datos de Programa\Microsoft\Diseño de Fondo\Fondo1.html

entonces, necesitaria saber lo sgte:

1.- como consigo el nombre de la carpeta del usuario (ruta)
2.- como copio 2 arcivos a la ruta antes rescatada
3.- que el programa se ejecute en forma transparente para el usuario.. (pero k cuando termine aparesca un mensaje de proceso ya realizado...)
4.- condición de que si existe el archivo lo copie igual y sin preguntar (siempre le pongo el mismo nombre al fondo.. asi que si se actualiza no cambie nada...)

y bueno,,,, eso seria...

seoane 13-09-2007 23:45:03

Le echaste un vistazo al programa para actualizar que coloque aquí:
http://www.clubdelphi.com/foros/show...03&postcount=4

BlueSteel 13-09-2007 23:53:52

Gracias seoane

se ve muy interesante.. aunque no entendi casi nada.:D, pero trataré de ver si puedo adivinar algo de tu codigo...

otra consulta.. que programa se ejecuta aqui ? se debe compilar el proyecto y ese se ejecuta???

Parece que necesitaré una clase super-hiper-avanzada...

seoane 14-09-2007 00:02:55

El programa se ejecuta y se mantiene en ejecución pero oculto. Cada 15 minutos comprueba si hay nuevas actualizaciones y, si las hay, las realiza. Quizá tu no necesites esto, puede que con solo una pasada te llegue, si es así elimina la función "Loop" y en el programa sustituye la llamada a "Loop", por la llamada a "Vamos". Así solo se ejecutara una vez.

Aun así, puede que el programa siga siendo excesivo. Pero encontraras en el casi todas las respuestas que buscabas, como encontrar una carpeta del sistema (perfil, temporal, etc), como ejecutar un programa sin formulario, como copiar un archivo encima de otro (incluso forzando la copia), etc ...

BlueSteel 14-09-2007 16:12:42

Ya lo puede hacer
 
Hola Saone...

al final realice lo sgte para ejecutarlo

utilice la funcion GetUserName para optener el nombre de usuario....

Código Delphi [-]
Function GetUserName:String;
Var
   PcUser  : PChar;
   DwUsize : DWord;
Begin
   DwUsize := 21;
   GetMem( PcUser, DwUsize);
   Try
      If Windows.GetUserName( PcUser, DwUsize ) then
         Result := PcUser
   Finally
      FreeMem( PcUser );
   End;
End;



con esto
Código Delphi [-]
If not DirectoryExists(Concat('C:\Documents and Settings\',GetUserName,'.Dominio)) Then

pregunto si existe el directorio Usuario.Dominio...si es así, ejecuto

Código Delphi [-]
Archivo1 := Concat('C:\Documents and Settings\',GetUserName,'\Datos de programa\Microsoft\Diseños de fondo\FondoA.jpg');
CopyFile(PChar('\\Servidor\Stationery\Fondo de Huachipato.jpg'),PChar(Archivo1),FALSE);


Esto me funciona bien desde un Form Visual, pero quiero traspasarlo a un Console Application, pero no se cual seria la estructura correcta (hace mucho tiempo que deje el turbo pascal.. y ando perdido entero..:D:D..

hasta el momento tengo esto... pero me da errores...


Código Delphi [-]
program Project1;
Uses
  FileCtrl;  // Para el DirectoryExists
{$APPTYPE CONSOLE}
Type
   Private
   Function GetUserName:String;
   End;
Var
  Archivo1, Archivo2 : String;
uses
  SysUtils;
Function GetUserName:String;
Var
   PcUser  : PChar;
   DwUsize : DWord;
Begin
   DwUsize := 21;
   GetMem( PcUser, DwUsize);
   Try
      If Windows.GetUserName( PcUser, DwUsize ) then
         Result := PcUser
   Finally
      FreeMem( PcUser );
   End;
End;
begin
    If not DirectoryExists(Concat('C:\Documents and Settings\',GetUserName,'.Dominio)) Then
       Begin
            Archivo1 := Concat('C:\Documents and Settings\',GetUserName,'\Datos de programa\Microsoft\Diseños de fondo\FondoA.jpg');
            Archivo2 := Concat('C:\Documents and Settings\',GetUserName,'\Datos de programa\Microsoft\Diseños de fondo\FondoA.htm');
       End
    Else
       Begin
            Archivo1 := Concat('C:\Documents and Settings\',GetUserName,'.Dominio\Datos de programa\Microsoft\Diseños de fondo\FondoA.jpg');
            Archivo2 := Concat('C:\Documents and Settings\',GetUserName,'.Dominio\Datos de programa\Microsoft\Diseños de fondo\FondoA.htm');
       End;
     CopyFile(PChar('\\Servidor\Stationery\FondoA.jpg'),PChar(Archivo1),FALSE);
     CopyFile(PChar('\\Servidor\Stationery\FondoA.jpg'),PChar(Archivo2),FALSE);
end.

Me podrias ayudar un poco con este codigo.... :p


La franja horaria es GMT +2. Ahora son las 09:12:34.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi