Inno Setup обновить рабочий стол - PullRequest
2 голосов
/ 01 мая 2011

Можно ли обновить рабочий стол с помощью Inno Setup в разделе [Code]?

Либо с помощью SendMessage, либо каким-либо образом используйте SHChangeNotify?

1 Ответ

3 голосов
/ 01 мая 2011

Вы можете вызывать любую функцию в Windows API, вызывая ее в соответствующей DLL. Синтаксис Pascal DLL задокументирован здесь . Документация по функции SHChangeNotify находится на MSDN как обычно. Эта функция найдена в Shell32.dll (не удивительно!).

[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;

Теперь вы можете вызывать SendChangeNotification где угодно, например, в функции события .

Обновление

Приведенный выше текст отвечает на ваш вопрос, как «обновить рабочий стол с помощью Inno Setup в разделе [Code]». Но вы знаете, что Inno Setup может обновить рабочий стол автоматически? Просто напишите

ChangesAssociations=yes

в разделе [Setup].

...