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 25-02-2008
Troffed Troffed is offline
Miembro
 
Registrado: mar 2004
Posts: 51
Poder: 21
Troffed Va por buen camino
Question Cambiar icono escritorio con InnoSetup

Hola a todos, tengo un instalador hecho con InnoSetup que instala una actualización de un programa, lo hace todo perfecto menos el cambiar el icono del acceso directo del escritorio.

Lo curioso del caso es que si después de instalar la actualización cambio los colores del escritorio si que se refresca el icono.

He probado a reiniciar el S.O. después de la instalación, ha cambiarle el nombre al acceso directo, a eliminar (desde el InnoSetup) el icono antes, pero nada, no lo consigo.

Para vuestra información estoy utilizando el InnoSetup 4.2.0, tengo pendiente actualizar a la 5.2, pero en este punto del desarrollo no quisiera introducir novedades.

Aquí dejo la parte del script que estoy utilizando donde se crea el icono:

Código:
[Files]
Source: ..\..\datos\Varios\Logos\Icono.ico; DestDir: {app}; Flags: ignoreversion
Source: ..\..\datos\ejecutables\{#PGEdicion}\{#PGGoldPlatinum}\photogestion.exe; DestDir: {app}; Flags: ignoreversion overwritereadonly
Source: ..\..\datos\varios\reports\*.*; DestDir: {app}\Reports; Flags: ignoreversion overwritereadonly
#include "includes\ayuda.iss"
#include "includes\DLLs.iss"

[Icons]
Name: {userdesktop}\PhotoGestion; Filename: {app}\PhotoGestion.exe; IconFilename: {app}\Icono.ico; IconIndex: 0; WorkingDir: {app}
No es que sea de vital importancia, pero ya que hemos cambiado el icono del programa me gustaría que los usuarios que se actualicen lo vean.

Muchas gracias.
__________________
"De la ignorancia nos equivocamos,
de los errores aprendemos."
---
www.softinspain.com
Responder Con Cita
  #2  
Antiguo 25-02-2008
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,

Si entendí bien se trata de actualizar el escritorio, de modo que se muestre el nuevo icono. No sé si funcionará, pero, es posible usar cierta función de Zarko Gajic desde Inno Setup. En la sección "CODE" del "script" de Inno Setup copia lo siguiente:

Código Delphi [-]
[code]

// Constantes that we need

const
  VK_F5 = 116;
  WM_KEYUP = $0101;
  WM_KEYDOWN = $0100;

// External Win32 API functions declarations

function FindWindow(className, windowName: PChar): Integer;
 external 'FindWindowA@user32.dll stdcall';

function FindWindowEx(Parent, Child: Integer; className, windowName: PChar): Integer;
 external 'FindWindowExA@user32.dll stdcall';

// Procedure to refresh the Windows desktop

procedure RefreshDesktop;
var
  hDesktop: Integer;
begin
  hDesktop := FindWindowEx(FindWindowEx(
    FindWindow('Progman', 'Program Manager'), 0,
     'SHELLDLL_DefView', ''), 0, 'SysListView32', '') ;
  PostMessage(hDesktop, WM_KEYDOWN, VK_F5, 0) ;
  PostMessage(hDesktop, WM_KEYUP, VK_F5, 1 shl 31) ;
end;

// Procedure that Inno Setup call when installation end

procedure DeinitializeSetup();
begin
  RefreshDesktop();
end;
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 25-02-2008
Troffed Troffed is offline
Miembro
 
Registrado: mar 2004
Posts: 51
Poder: 21
Troffed Va por buen camino
Voy a provarlo y comento algo.

Gracias.
__________________
"De la ignorancia nos equivocamos,
de los errores aprendemos."
---
www.softinspain.com
Responder Con Cita
  #4  
Antiguo 25-02-2008
Troffed Troffed is offline
Miembro
 
Registrado: mar 2004
Posts: 51
Poder: 21
Troffed Va por buen camino
Pues no ha funcionado

Aunque me has dado una idea, voy a buscar si el API de Windows tiene algo para fozar el cambio de icono de un enlace directo.

Continuará ....
__________________
"De la ignorancia nos equivocamos,
de los errores aprendemos."
---
www.softinspain.com
Responder Con Cita
  #5  
Antiguo 25-02-2008
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,

De todas formas hay una función del API de Windows que sirve para hacerle saber al sistema de ciertos cambios... dicha función es "SystemParametersInfo()", y, siempre sería posible ejecutarla desde Inno Setup. Si bien tendrías que mirar en su ayuda para ver cómo declararla.

Aunque he sido yo mismo quien ha propuesto otra solución, no dejaría de mirar esta otra que digo, puesto que, al fin y al cabo, lo que hace la función de Zarko es "enviar la tecla F5" a la ventana del escritorio de Windows... tal vez esto no sea muy elegante si puede hacerse de otra forma. Digo yo.

PD. Aquí un ejemplo de llamada a dicha función cuando se ha cambiado el "papel tapiz" del escritorio, por ejemplo:

Código Delphi [-]
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0,
  Pchar(archivoBmp), SPIF_UPDATEINIFILE or SPIF_SENDCHANGE);
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #6  
Antiguo 25-02-2008
Troffed Troffed is offline
Miembro
 
Registrado: mar 2004
Posts: 51
Poder: 21
Troffed Va por buen camino
Talking

Al final he encontrado una solución, que por simple, no se me había ocurrido antes: Eliminar el .LNK al empezar a instalar

Código:
[InstallDelete]
Name: {userdesktop}\PhotoGestion.lnk; Type: files
¡¡¡¡ SOLUCIONADO !!!!

Gracias de todas formas.
__________________
"De la ignorancia nos equivocamos,
de los errores aprendemos."
---
www.softinspain.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
Eliminar icono de papelera del escritorio soler Varios 18 16-01-2008 22:17:53
Cambiar el icono a un .exe lag_0 Varios 4 23-08-2007 14:53:01
El icono mostrar escritorio de la barra de tareas ha desaparecido fidel Windows 6 10-12-2005 19:15:18
Como cambiar el fondo de escritorio? JuanErasmo C++ Builder 1 22-11-2005 22:37:54
Cambiar iconos del escritorio de Windows tiel API de Windows 8 03-07-2005 21:10:56


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


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