InstallShield 2010 以降を使用している InstallShield ユーザー。
重要: InstallScript エンジンは、バージョン 2010 以降、Unicode 用に変更されました。
したがって、使用POINTER pEnv;すると機能しなくなります。WPOINTER pEnv;代わりに使用する必要があります。私は個人的にInstallShield 2013を使用しており、見つかったものはすべて「アプローチ」を示唆していましPOINTERたが、これは後のバージョンに変換されないレガシー コードです。
InstallShield 2013 で次の InstallScript 関数を使用します。
// 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をすべてのトップレベル ウィンドウにブロードキャストすることです。このようにして、システム全体の変更が行われたことを認識します。