diff --git a/.gitignore b/.gitignore index 672d08ac3dc60d..93e41e5753d3d9 100644 --- a/.gitignore +++ b/.gitignore @@ -28,6 +28,7 @@ Release/ *.suo *.vcproj *.vcxproj +!custom_actions.vcxproj *.vcxproj.user *.vcxproj.filters UpgradeLog*.XML diff --git a/tools/msvs/msi/custom_actions.c b/tools/msvs/msi/custom_actions.c new file mode 100644 index 00000000000000..5e7d617f387915 --- /dev/null +++ b/tools/msvs/msi/custom_actions.c @@ -0,0 +1,42 @@ + +#define WIN32_LEAN_AND_MEAN + +#include +#include +#include + + +UINT WINAPI BroadcastEnvironmentUpdate(MSIHANDLE hInstall) { + HRESULT hr = S_OK; + UINT er = ERROR_SUCCESS; + + hr = WcaInitialize(hInstall, "BroadcastEnvironmentUpdate"); + ExitOnFailure(hr, "Failed to initialize"); + + SendMessageTimeoutW(HWND_BROADCAST, + WM_SETTINGCHANGE, + 0, + (LPARAM) L"Environment", + SMTO_ABORTIFHUNG, + 5000, + NULL); + +LExit: + er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE; + return WcaFinalize(er); +} + + +BOOL WINAPI DllMain(HINSTANCE hInst, ULONG ulReason, VOID* dummy) { + switch (ulReason) { + case DLL_PROCESS_ATTACH: + WcaGlobalInitialize(hInst); + break; + + case DLL_PROCESS_DETACH: + WcaGlobalFinalize(); + break; + } + + return TRUE; +} diff --git a/tools/msvs/msi/custom_actions.def b/tools/msvs/msi/custom_actions.def new file mode 100644 index 00000000000000..29e0933e379a78 --- /dev/null +++ b/tools/msvs/msi/custom_actions.def @@ -0,0 +1,4 @@ +LIBRARY "custom_actions" + +EXPORTS +BroadcastEnvironmentUpdate \ No newline at end of file diff --git a/tools/msvs/msi/custom_actions.vcxproj b/tools/msvs/msi/custom_actions.vcxproj new file mode 100644 index 00000000000000..e014a6981f5fc9 --- /dev/null +++ b/tools/msvs/msi/custom_actions.vcxproj @@ -0,0 +1,181 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {B70585F8-DAB7-40FA-9904-13CF53A73A06} + BroadcastPathUpdateCustomAction + Win32Proj + custom_actions + + + + DynamicLibrary + v120 + Unicode + true + + + DynamicLibrary + v120 + Unicode + true + + + DynamicLibrary + v120 + Unicode + + + DynamicLibrary + v120 + Unicode + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>12.0.30501.0 + + + true + + + true + + + false + + + false + + + + Disabled + $(WIX)sdk\VS2013\inc;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + NotUsing + Level3 + ProgramDatabase + + + msi.lib;dutil.lib;wcautil.lib;version.lib;%(AdditionalDependencies) + $(WIX)sdk\VS2013\lib\x86;%(AdditionalLibraryDirectories) + custom_actions.def + true + Windows + + + + + Disabled + $(WIX)sdk\VS2013\inc;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + NotUsing + Level3 + ProgramDatabase + + + msi.lib;dutil.lib;wcautil.lib;version.lib;%(AdditionalDependencies) + $(WIX)sdk\VS2013\lib\x64;%(AdditionalLibraryDirectories) + custom_actions.def + true + Windows + + + + + MaxSpeed + true + $(WIX)sdk\VS2013\inc;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + MultiThreaded + true + Level3 + ProgramDatabase + NotUsing + + + + + + + msi.lib;dutil.lib;wcautil.lib;version.lib;%(AdditionalDependencies) + $(WIX)sdk\VS2013\lib\x86;%(AdditionalLibraryDirectories) + custom_actions.def + true + Windows + true + true + + + + + MaxSpeed + true + $(WIX)sdk\VS2013\inc;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + MultiThreaded + true + Level3 + ProgramDatabase + NotUsing + + + + + + + msi.lib;dutil.lib;wcautil.lib;version.lib;%(AdditionalDependencies) + $(WIX)sdk\VS2013\lib\x64;%(AdditionalLibraryDirectories) + custom_actions.def + true + Windows + true + true + + + + + + + + + + + + + \ No newline at end of file diff --git a/tools/msvs/msi/nodemsi.sln b/tools/msvs/msi/nodemsi.sln index f95b00f879cefb..9a3bab3f5cb448 100644 --- a/tools/msvs/msi/nodemsi.sln +++ b/tools/msvs/msi/nodemsi.sln @@ -3,6 +3,8 @@ Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "nodemsi", "nodemsi.wixproj", "{1D808FF0-B5A9-4BE9-859D-B334B6F48BE2}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "custom_actions", "custom_actions.vcxproj", "{B70585F8-DAB7-40FA-9904-13CF53A73A06}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64 @@ -19,6 +21,14 @@ Global {1D808FF0-B5A9-4BE9-859D-B334B6F48BE2}.Release|x64.Build.0 = Release|x64 {1D808FF0-B5A9-4BE9-859D-B334B6F48BE2}.Release|x86.ActiveCfg = Release|x86 {1D808FF0-B5A9-4BE9-859D-B334B6F48BE2}.Release|x86.Build.0 = Release|x86 + {B70585F8-DAB7-40FA-9904-13CF53A73A06}.Debug|x64.ActiveCfg = Debug|x64 + {B70585F8-DAB7-40FA-9904-13CF53A73A06}.Debug|x64.Build.0 = Debug|x64 + {B70585F8-DAB7-40FA-9904-13CF53A73A06}.Debug|x86.ActiveCfg = Debug|Win32 + {B70585F8-DAB7-40FA-9904-13CF53A73A06}.Debug|x86.Build.0 = Debug|Win32 + {B70585F8-DAB7-40FA-9904-13CF53A73A06}.Release|x64.ActiveCfg = Release|x64 + {B70585F8-DAB7-40FA-9904-13CF53A73A06}.Release|x64.Build.0 = Release|x64 + {B70585F8-DAB7-40FA-9904-13CF53A73A06}.Release|x86.ActiveCfg = Release|Win32 + {B70585F8-DAB7-40FA-9904-13CF53A73A06}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/tools/msvs/msi/nodemsi.wixproj b/tools/msvs/msi/nodemsi.wixproj index 1059bccb22d681..8d17a6cfb4a76c 100644 --- a/tools/msvs/msi/nodemsi.wixproj +++ b/tools/msvs/msi/nodemsi.wixproj @@ -56,6 +56,16 @@ + + + custom_actions + {b70585f8-dab7-40fa-9904-13cf53a73a06} + True + True + Binaries;Content;Satellites + INSTALLFOLDER + + diff --git a/tools/msvs/msi/product.wxs b/tools/msvs/msi/product.wxs index 1d674aaa068684..e7c55edd9afa2a 100755 --- a/tools/msvs/msi/product.wxs +++ b/tools/msvs/msi/product.wxs @@ -237,7 +237,17 @@ + + + + +