From 16bcd68dc5f449c331499ced22aa626dbb2cdefc Mon Sep 17 00:00:00 2001 From: Julien Gilli Date: Fri, 19 Jun 2015 10:24:14 -0700 Subject: [PATCH] win: fix custom actions on Visual Studio != 2013 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The original change that added support for running custom actions during the install process (e7c84f82c730bddb7450dc56065aab11b93ffd30) assumed that Visual Studio 2013 is used to generate the installer file. However, that is not always the case, and older versions of Visual Studio should allow users to generate Windows installer files. This change makes the custom actions visual studio project use the visual studio version that is found by vcbuild.bat. Reviewed-By: João Reis PR-URL: https://github.com/joyent/node/pull/25569 --- tools/msvs/msi/custom_actions.vcxproj | 28 ++++++++++----------- vcbuild.bat | 36 ++++++++++++++++++++++++++- 2 files changed, 49 insertions(+), 15 deletions(-) diff --git a/tools/msvs/msi/custom_actions.vcxproj b/tools/msvs/msi/custom_actions.vcxproj index e014a6981f..ae82905cd4 100644 --- a/tools/msvs/msi/custom_actions.vcxproj +++ b/tools/msvs/msi/custom_actions.vcxproj @@ -1,5 +1,5 @@  - + Debug @@ -27,24 +27,24 @@ DynamicLibrary - v120 + $(PlatformToolset) Unicode true DynamicLibrary - v120 + $(PlatformToolset) Unicode true DynamicLibrary - v120 + $(PlatformToolset) Unicode DynamicLibrary - v120 + $(PlatformToolset) Unicode @@ -81,7 +81,7 @@ Disabled - $(WIX)sdk\VS2013\inc;%(AdditionalIncludeDirectories) + $(WIX)sdk\VS$(GypMsvsVersion)\inc;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug @@ -91,7 +91,7 @@ msi.lib;dutil.lib;wcautil.lib;version.lib;%(AdditionalDependencies) - $(WIX)sdk\VS2013\lib\x86;%(AdditionalLibraryDirectories) + $(WIX)sdk\VS$(GypMsvsVersion)\lib\x86;%(AdditionalLibraryDirectories) custom_actions.def true Windows @@ -100,7 +100,7 @@ Disabled - $(WIX)sdk\VS2013\inc;%(AdditionalIncludeDirectories) + $(WIX)sdk\VS$(GypMsvsVersion)\inc;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug @@ -110,7 +110,7 @@ msi.lib;dutil.lib;wcautil.lib;version.lib;%(AdditionalDependencies) - $(WIX)sdk\VS2013\lib\x64;%(AdditionalLibraryDirectories) + $(WIX)sdk\VS$(GypMsvsVersion)\lib\x64;%(AdditionalLibraryDirectories) custom_actions.def true Windows @@ -120,7 +120,7 @@ MaxSpeed true - $(WIX)sdk\VS2013\inc;%(AdditionalIncludeDirectories) + $(WIX)sdk\VS$(GypMsvsVersion)\inc;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) MultiThreaded true @@ -134,7 +134,7 @@ msi.lib;dutil.lib;wcautil.lib;version.lib;%(AdditionalDependencies) - $(WIX)sdk\VS2013\lib\x86;%(AdditionalLibraryDirectories) + $(WIX)sdk\VS$(GypMsvsVersion)\lib\x86;%(AdditionalLibraryDirectories) custom_actions.def true Windows @@ -146,7 +146,7 @@ MaxSpeed true - $(WIX)sdk\VS2013\inc;%(AdditionalIncludeDirectories) + $(WIX)sdk\VS$(GypMsvsVersion)\inc;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) MultiThreaded true @@ -160,7 +160,7 @@ msi.lib;dutil.lib;wcautil.lib;version.lib;%(AdditionalDependencies) - $(WIX)sdk\VS2013\lib\x64;%(AdditionalLibraryDirectories) + $(WIX)sdk\VS$(GypMsvsVersion)\lib\x64;%(AdditionalLibraryDirectories) custom_actions.def true Windows @@ -178,4 +178,4 @@ - \ No newline at end of file + diff --git a/vcbuild.bat b/vcbuild.bat index 511e1734b1..4684769136 100644 --- a/vcbuild.bat +++ b/vcbuild.bat @@ -84,34 +84,68 @@ if defined noetw set noetw_arg=--without-etw& set noetw_msi_arg=/p:NoETW=1 if defined noperfctr set noperfctr_arg=--without-perfctr& set noperfctr_msi_arg=/p:NoPerfCtr=1 @rem Look for Visual Studio 2013 +echo Looking for Visual Studio 2013 if not defined VS120COMNTOOLS goto vc-set-2012 if not exist "%VS120COMNTOOLS%\..\..\vc\vcvarsall.bat" goto vc-set-2012 +echo Found Visual Studio 2013 +if defined msi ( + echo Looking for WiX installation for Visual Studio 2013... + if not exist "%WIX%\SDK\VS2013" ( + echo Failed to find WiX install for Visual Studio 2013 + goto vc-set-2012 + ) +) call "%VS120COMNTOOLS%\..\..\vc\vcvarsall.bat" if not defined VCINSTALLDIR goto msbuild-not-found set GYP_MSVS_VERSION=2013 +set PLATFORM_TOOLSET=v120 goto msbuild-found :vc-set-2012 @rem Look for Visual Studio 2012 +echo Looking for Visual Studio 2012 if not defined VS110COMNTOOLS goto vc-set-2010 if not exist "%VS110COMNTOOLS%\..\..\vc\vcvarsall.bat" goto vc-set-2010 +echo Found Visual Studio 2012 +if defined msi ( + echo Looking for WiX installation for Visual Studio 2012... + if not exist "%WIX%\SDK\VS2012" ( + echo Failed to find WiX install for Visual Studio 2012 + goto vc-set-2010 + ) +) call "%VS110COMNTOOLS%\..\..\vc\vcvarsall.bat" if not defined VCINSTALLDIR goto msbuild-not-found set GYP_MSVS_VERSION=2012 +set PLATFORM_TOOLSET=v110 goto msbuild-found :vc-set-2010 +echo Looking for Visual Studio 2010 if not defined VS100COMNTOOLS goto msbuild-not-found if not exist "%VS100COMNTOOLS%\..\..\vc\vcvarsall.bat" goto msbuild-not-found +echo Found Visual Studio 2010 +if defined msi ( + echo Looking for WiX installation for Visual Studio 2010... + if not exist "%WIX%\SDK\VS2010" ( + echo Failed to find WiX install for Visual Studio 2010 + goto wix-not-found + ) +) call "%VS100COMNTOOLS%\..\..\vc\vcvarsall.bat" if not defined VCINSTALLDIR goto msbuild-not-found set GYP_MSVS_VERSION=2010 +set PLATFORM_TOOLSET=v100 goto msbuild-found :msbuild-not-found echo Failed to find Visual Studio installation. goto exit +:wix-not-found +echo Build skipped. To generate installer, you need to install Wix. +goto run + :msbuild-found :project-gen @@ -158,7 +192,7 @@ set NODE_VERSION=%NODE_VERSION%.%NIGHTLY% :msibuild echo Building node-%NODE_VERSION% -msbuild "%~dp0tools\msvs\msi\nodemsi.sln" /m /t:Clean,Build /p:Configuration=%config% /p:Platform=%msiplatform% /p:NodeVersion=%NODE_VERSION% %noetw_msi_arg% %noperfctr_msi_arg% /clp:NoSummary;NoItemAndPropertyList;Verbosity=minimal /nologo +msbuild "%~dp0tools\msvs\msi\nodemsi.sln" /m /t:Clean,Build /p:PlatformToolset=%PLATFORM_TOOLSET% /p:GypMsvsVersion=%GYP_MSVS_VERSION% /p:Configuration=%config% /p:Platform=%msiplatform% /p:NodeVersion=%NODE_VERSION% %noetw_msi_arg% %noperfctr_msi_arg% /clp:NoSummary;NoItemAndPropertyList;Verbosity=minimal /nologo if errorlevel 1 goto exit if defined nosign goto run