Skip to content

Commit b5bd3eb

Browse files
Julien Gillirvagg
Julien Gilli
authored andcommitted
win: fix custom actions on Visual Studio != 2013
This is a port of nodejs/node-v0.x-archive@16bcd68 . Original commit message: The original change that added support for running custom actions during the install process (nodejs/node-v0.x-archive@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 PR-URL: #2365 Reviewed-By: Alexis Campailla <[email protected]>
1 parent 9330f5e commit b5bd3eb

File tree

2 files changed

+41
-15
lines changed

2 files changed

+41
-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

+27-1
Original file line numberDiff line numberDiff line change
@@ -103,32 +103,58 @@ call :getnodeversion || exit /b 1
103103
@rem Set environment for msbuild
104104

105105
@rem Look for Visual Studio 2015
106+
echo Looking for Visual Studio 2015
106107
if not defined VS140COMNTOOLS goto vc-set-2013
107108
if not exist "%VS140COMNTOOLS%\..\..\vc\vcvarsall.bat" goto vc-set-2013
109+
echo Found Visual Studio 2015
110+
if defined msi (
111+
echo Looking for WiX installation for Visual Studio 2015...
112+
if not exist "%WIX%\SDK\VS2015" (
113+
echo Failed to find WiX install for Visual Studio 2015
114+
echo VS2015 support for WiX is only present starting at version 3.10
115+
goto vc-set-2013
116+
)
117+
)
108118
if "%VCVARS_VER%" NEQ "140" (
109119
call "%VS140COMNTOOLS%\..\..\vc\vcvarsall.bat"
110120
SET VCVARS_VER=140
111121
)
112122
if not defined VCINSTALLDIR goto vc-set-2013
113123
set GYP_MSVS_VERSION=2015
124+
set PLATFORM_TOOLSET=v140
114125
goto msbuild-found
115126

116127
:vc-set-2013
117128
@rem Look for Visual Studio 2013
129+
echo Looking for Visual Studio 2013
118130
if not defined VS120COMNTOOLS goto msbuild-not-found
119131
if not exist "%VS120COMNTOOLS%\..\..\vc\vcvarsall.bat" goto msbuild-not-found
132+
echo Found Visual Studio 2013
133+
if defined msi (
134+
echo Looking for WiX installation for Visual Studio 2013...
135+
if not exist "%WIX%\SDK\VS2013" (
136+
echo Failed to find WiX install for Visual Studio 2013
137+
echo VS2013 support for WiX is only present starting at version 3.8
138+
goto vc-set-2012
139+
)
140+
)
120141
if "%VCVARS_VER%" NEQ "120" (
121142
call "%VS120COMNTOOLS%\..\..\vc\vcvarsall.bat"
122143
SET VCVARS_VER=120
123144
)
124145
if not defined VCINSTALLDIR goto msbuild-not-found
125146
set GYP_MSVS_VERSION=2013
147+
set PLATFORM_TOOLSET=v120
126148
goto msbuild-found
127149

128150
:msbuild-not-found
129151
echo Failed to find Visual Studio installation.
130152
goto exit
131153

154+
:wix-not-found
155+
echo Build skipped. To generate installer, you need to install Wix.
156+
goto run
157+
132158
:msbuild-found
133159

134160
:project-gen
@@ -170,7 +196,7 @@ if not defined msi goto run
170196

171197
:msibuild
172198
echo Building iojs-v%FULLVERSION%-%target_arch%.msi
173-
msbuild "%~dp0tools\msvs\msi\nodemsi.sln" /m /t:Clean,Build /p:Configuration=%config% /p:Platform=%target_arch% /p:NodeVersion=%NODE_VERSION% /p:FullVersion=%FULLVERSION% /p:DistTypeDir=%DISTTYPEDIR% %noetw_msi_arg% %noperfctr_msi_arg% /clp:NoSummary;NoItemAndPropertyList;Verbosity=minimal /nologo
199+
msbuild "%~dp0tools\msvs\msi\nodemsi.sln" /m /t:Clean,Build /p:PlatformToolset=%PLATFORM_TOOLSET% /p:GypMsvsVersion=%GYP_MSVS_VERSION% /p:Configuration=%config% /p:Platform=%target_arch% /p:NodeVersion=%NODE_VERSION% /p:FullVersion=%FULLVERSION% /p:DistTypeDir=%DISTTYPEDIR% %noetw_msi_arg% %noperfctr_msi_arg% /clp:NoSummary;NoItemAndPropertyList;Verbosity=minimal /nologo
174200
if errorlevel 1 goto exit
175201

176202
if defined nosign goto upload

0 commit comments

Comments
 (0)