Пользователи InstallShield, использующие InstallShield 2010 или более позднюю версию.
Важно: Механизм InstallScript изменился с версии 2010 для Unicode.
Таким образом, использование POINTER pEnv;
больше не будет работать. Вы должны использовать WPOINTER pEnv;
вместо этого. Я лично использую InstallShield 2013 , и все, что я нашел, подсказывало "POINTER
подход", но это часть устаревшего кода, который не переводится в более поздние версии.
Я использую следующую функцию InstallScript в InstallShield 2013:
// Flush the NT registry to all applications.
function RefreshEnvironment()
STRING szEnv;
WPOINTER pEnv;
begin
szEnv = "Environment";
pEnv = &szEnv;
SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, pEnv);
end;
И для моих определений я использую:
// defines
#define WM_SETTINGCHANGE 0x001A
#define HWND_BROADCAST 0xffff
Таким образом, ключ здесь транслируется WM_SETTINGCHANGE на все окна верхнего уровня. Таким образом, они знают, что были внесены общесистемные изменения.