Skip to content

Commit 16bcd68

Browse files
author
Julien Gilli
committed
win: fix custom actions on Visual Studio != 2013
The original change that added support for running custom actions during the install process (e7c84f8) 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 <[email protected]> PR-URL: nodejs/node-v0.x-archive#25569
1 parent 517986c commit 16bcd68

File tree

2 files changed

+49
-15
lines changed

2 files changed

+49
-15
lines changed

tools/msvs/msi/custom_actions.vcxproj

+14-14
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2+
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
33
<ItemGroup Label="ProjectConfigurations">
44
<ProjectConfiguration Include="Debug|Win32">
55
<Configuration>Debug</Configuration>
@@ -27,24 +27,24 @@
2727
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
2828
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
2929
<ConfigurationType>DynamicLibrary</ConfigurationType>
30-
<PlatformToolset>v120</PlatformToolset>
30+
<PlatformToolset>$(PlatformToolset)</PlatformToolset>
3131
<CharacterSet>Unicode</CharacterSet>
3232
<WholeProgramOptimization>true</WholeProgramOptimization>
3333
</PropertyGroup>
3434
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
3535
<ConfigurationType>DynamicLibrary</ConfigurationType>
36-
<PlatformToolset>v120</PlatformToolset>
36+
<PlatformToolset>$(PlatformToolset)</PlatformToolset>
3737
<CharacterSet>Unicode</CharacterSet>
3838
<WholeProgramOptimization>true</WholeProgramOptimization>
3939
</PropertyGroup>
4040
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
4141
<ConfigurationType>DynamicLibrary</ConfigurationType>
42-
<PlatformToolset>v120</PlatformToolset>
42+
<PlatformToolset>$(PlatformToolset)</PlatformToolset>
4343
<CharacterSet>Unicode</CharacterSet>
4444
</PropertyGroup>
4545
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
4646
<ConfigurationType>DynamicLibrary</ConfigurationType>
47-
<PlatformToolset>v120</PlatformToolset>
47+
<PlatformToolset>$(PlatformToolset)</PlatformToolset>
4848
<CharacterSet>Unicode</CharacterSet>
4949
</PropertyGroup>
5050
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
@@ -81,7 +81,7 @@
8181
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
8282
<ClCompile>
8383
<Optimization>Disabled</Optimization>
84-
<AdditionalIncludeDirectories>$(WIX)sdk\VS2013\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
84+
<AdditionalIncludeDirectories>$(WIX)sdk\VS$(GypMsvsVersion)\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
8585
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
8686
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
8787
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
@@ -91,7 +91,7 @@
9191
</ClCompile>
9292
<Link>
9393
<AdditionalDependencies>msi.lib;dutil.lib;wcautil.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
94-
<AdditionalLibraryDirectories>$(WIX)sdk\VS2013\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
94+
<AdditionalLibraryDirectories>$(WIX)sdk\VS$(GypMsvsVersion)\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
9595
<ModuleDefinitionFile>custom_actions.def</ModuleDefinitionFile>
9696
<GenerateDebugInformation>true</GenerateDebugInformation>
9797
<SubSystem>Windows</SubSystem>
@@ -100,7 +100,7 @@
100100
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
101101
<ClCompile>
102102
<Optimization>Disabled</Optimization>
103-
<AdditionalIncludeDirectories>$(WIX)sdk\VS2013\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
103+
<AdditionalIncludeDirectories>$(WIX)sdk\VS$(GypMsvsVersion)\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
104104
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
105105
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
106106
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
@@ -110,7 +110,7 @@
110110
</ClCompile>
111111
<Link>
112112
<AdditionalDependencies>msi.lib;dutil.lib;wcautil.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
113-
<AdditionalLibraryDirectories>$(WIX)sdk\VS2013\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
113+
<AdditionalLibraryDirectories>$(WIX)sdk\VS$(GypMsvsVersion)\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
114114
<ModuleDefinitionFile>custom_actions.def</ModuleDefinitionFile>
115115
<GenerateDebugInformation>true</GenerateDebugInformation>
116116
<SubSystem>Windows</SubSystem>
@@ -120,7 +120,7 @@
120120
<ClCompile>
121121
<Optimization>MaxSpeed</Optimization>
122122
<IntrinsicFunctions>true</IntrinsicFunctions>
123-
<AdditionalIncludeDirectories>$(WIX)sdk\VS2013\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
123+
<AdditionalIncludeDirectories>$(WIX)sdk\VS$(GypMsvsVersion)\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
124124
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
125125
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
126126
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -134,7 +134,7 @@
134134
</ClCompile>
135135
<Link>
136136
<AdditionalDependencies>msi.lib;dutil.lib;wcautil.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
137-
<AdditionalLibraryDirectories>$(WIX)sdk\VS2013\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
137+
<AdditionalLibraryDirectories>$(WIX)sdk\VS$(GypMsvsVersion)\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
138138
<ModuleDefinitionFile>custom_actions.def</ModuleDefinitionFile>
139139
<GenerateDebugInformation>true</GenerateDebugInformation>
140140
<SubSystem>Windows</SubSystem>
@@ -146,7 +146,7 @@
146146
<ClCompile>
147147
<Optimization>MaxSpeed</Optimization>
148148
<IntrinsicFunctions>true</IntrinsicFunctions>
149-
<AdditionalIncludeDirectories>$(WIX)sdk\VS2013\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
149+
<AdditionalIncludeDirectories>$(WIX)sdk\VS$(GypMsvsVersion)\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
150150
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
151151
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
152152
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -160,7 +160,7 @@
160160
</ClCompile>
161161
<Link>
162162
<AdditionalDependencies>msi.lib;dutil.lib;wcautil.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
163-
<AdditionalLibraryDirectories>$(WIX)sdk\VS2013\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
163+
<AdditionalLibraryDirectories>$(WIX)sdk\VS$(GypMsvsVersion)\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
164164
<ModuleDefinitionFile>custom_actions.def</ModuleDefinitionFile>
165165
<GenerateDebugInformation>true</GenerateDebugInformation>
166166
<SubSystem>Windows</SubSystem>
@@ -178,4 +178,4 @@
178178
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
179179
<ImportGroup Label="ExtensionTargets">
180180
</ImportGroup>
181-
</Project>
181+
</Project>

vcbuild.bat

+35-1
Original file line numberDiff line numberDiff line change
@@ -84,34 +84,68 @@ if defined noetw set noetw_arg=--without-etw& set noetw_msi_arg=/p:NoETW=1
8484
if defined noperfctr set noperfctr_arg=--without-perfctr& set noperfctr_msi_arg=/p:NoPerfCtr=1
8585

8686
@rem Look for Visual Studio 2013
87+
echo Looking for Visual Studio 2013
8788
if not defined VS120COMNTOOLS goto vc-set-2012
8889
if not exist "%VS120COMNTOOLS%\..\..\vc\vcvarsall.bat" goto vc-set-2012
90+
echo Found Visual Studio 2013
91+
if defined msi (
92+
echo Looking for WiX installation for Visual Studio 2013...
93+
if not exist "%WIX%\SDK\VS2013" (
94+
echo Failed to find WiX install for Visual Studio 2013
95+
goto vc-set-2012
96+
)
97+
)
8998
call "%VS120COMNTOOLS%\..\..\vc\vcvarsall.bat"
9099
if not defined VCINSTALLDIR goto msbuild-not-found
91100
set GYP_MSVS_VERSION=2013
101+
set PLATFORM_TOOLSET=v120
92102
goto msbuild-found
93103

94104
:vc-set-2012
95105
@rem Look for Visual Studio 2012
106+
echo Looking for Visual Studio 2012
96107
if not defined VS110COMNTOOLS goto vc-set-2010
97108
if not exist "%VS110COMNTOOLS%\..\..\vc\vcvarsall.bat" goto vc-set-2010
109+
echo Found Visual Studio 2012
110+
if defined msi (
111+
echo Looking for WiX installation for Visual Studio 2012...
112+
if not exist "%WIX%\SDK\VS2012" (
113+
echo Failed to find WiX install for Visual Studio 2012
114+
goto vc-set-2010
115+
)
116+
)
98117
call "%VS110COMNTOOLS%\..\..\vc\vcvarsall.bat"
99118
if not defined VCINSTALLDIR goto msbuild-not-found
100119
set GYP_MSVS_VERSION=2012
120+
set PLATFORM_TOOLSET=v110
101121
goto msbuild-found
102122

103123
:vc-set-2010
124+
echo Looking for Visual Studio 2010
104125
if not defined VS100COMNTOOLS goto msbuild-not-found
105126
if not exist "%VS100COMNTOOLS%\..\..\vc\vcvarsall.bat" goto msbuild-not-found
127+
echo Found Visual Studio 2010
128+
if defined msi (
129+
echo Looking for WiX installation for Visual Studio 2010...
130+
if not exist "%WIX%\SDK\VS2010" (
131+
echo Failed to find WiX install for Visual Studio 2010
132+
goto wix-not-found
133+
)
134+
)
106135
call "%VS100COMNTOOLS%\..\..\vc\vcvarsall.bat"
107136
if not defined VCINSTALLDIR goto msbuild-not-found
108137
set GYP_MSVS_VERSION=2010
138+
set PLATFORM_TOOLSET=v100
109139
goto msbuild-found
110140

111141
:msbuild-not-found
112142
echo Failed to find Visual Studio installation.
113143
goto exit
114144

145+
:wix-not-found
146+
echo Build skipped. To generate installer, you need to install Wix.
147+
goto run
148+
115149
:msbuild-found
116150

117151
:project-gen
@@ -158,7 +192,7 @@ set NODE_VERSION=%NODE_VERSION%.%NIGHTLY%
158192

159193
:msibuild
160194
echo Building node-%NODE_VERSION%
161-
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
195+
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
162196
if errorlevel 1 goto exit
163197

164198
if defined nosign goto run

0 commit comments

Comments
 (0)