windows - opdatering af skrivebordet til Inno Setup

Indlæg af Hanne Mølgaard Plasc

Problem



Er det muligt at opdatere skrivebordet ved hjælp af Inno Setup i sektionen [Code]?


Enten ved at bruge SendMessage eller på en eller anden måde bruge SHChangeNotify?

Bedste reference


Du kan ringe til enhver funktion i Windows API ved at kalde den i den relevante DLL. Pascal DLL-syntaxen er dokumenteret her. Dokumentationen af ​​funktionen SHChangeNotify findes på MSDN som normalt. Denne funktion findes i Shell32.dll (ingen overraskelse!). [10] [11]


[Code]
const
  SHCNE\_ASSOCCHANGED = $08000000;
  SHCNF\_IDLIST = $00000000;

procedure SHChangeNotify(wEventID: integer; uFlags: cardinal; dwItem1, dwItem2: cardinal);
external 'SHChangeNotify@shell32.dll stdcall';

procedure SendChangeNotification;
begin
  SHChangeNotify(SHCNE\_ASSOCCHANGED, SHCNF\_IDLIST, 0, 0);
end;


Nu kan du ringe SendChangeNotification hvor som helst du vil, for eksempel i en hændelsesfunktion. [12]


Opdater


Teksten ovenfor svarer til dit spørgsmål, hvordan du 'opdaterer skrivebordet vha. Inno Setup i sektionen [[Kode]]'. Men du ved, at Inno Setup kan opdatere skrivebordet for dig automatisk? Skriv blot


ChangesAssociations=yes


i sektionen [Setup].