Skip to content

Commit c03e79b

Browse files
StefanStojanovicRafaelGSS
authored andcommitted
msi: migrate to WiX4
To be able to build x86, x64, and ARM64 MSI installers with the same WiX version, migration to WiX4 is required. PR-URL: #45943 Refs: nodejs/build#2540 Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Richard Lau <rlau@redhat.com>
1 parent ef62e5a commit c03e79b

13 files changed

+227
-289
lines changed

.gitignore

+5-5
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,12 @@ _UpgradeReport_Files/
6565
/tools/msvs/genfiles/
6666
/npm.wxs
6767
/corepack.wxs
68-
/tools/msvs/msi/Release/
69-
/tools/msvs/msi/obj/
70-
/tools/msvs/msi/x64/
68+
/tools/msvs/msi/**/Release/
69+
/tools/msvs/msi/**/obj/
70+
/tools/msvs/msi/**/x64/
7171
# Exclude MSVS files used for .msi file generation
72-
!tools/msvs/msi/custom_actions.vcxproj
73-
!tools/msvs/msi/nodemsi.sln
72+
!tools/msvs/msi/**/custom_actions.vcxproj
73+
!tools/msvs/msi/**/nodemsi.sln
7474

7575
# === Rules for GYP artifacts ===
7676
*-nodegyp*

BUILDING.md

+1-4
Original file line numberDiff line numberDiff line change
@@ -586,10 +586,7 @@ to run it again before invoking `make -j4`.
586586

587587
Optional requirements to build the MSI installer package:
588588

589-
* The [WiX Toolset v3.11](https://wixtoolset.org/releases/) and the
590-
[Wix Toolset Visual Studio 2019 Extension](https://marketplace.visualstudio.com/items?itemName=WixToolset.WixToolsetVisualStudio2019Extension)
591-
* The [WiX Toolset v3.14](https://wixtoolset.org/releases/) if
592-
building for Windows 10 on ARM (ARM64)
589+
* The .NET SDK component from [Visual Studio 2019](https://visualstudio.microsoft.com/vs/older-downloads/#visual-studio-2019-and-other-products)
593590

594591
Optional requirements for compiling for Windows 10 on ARM (ARM64):
595592

tools/msvs/msi/NuGet.Config

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<configuration>
3+
<packageSources>
4+
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
5+
</packageSources>
6+
</configuration>

tools/msvs/msi/custom_actions.cc tools/msvs/msi/custom_actions/custom_actions.cc

-21
Original file line numberDiff line numberDiff line change
@@ -77,27 +77,6 @@ extern "C" UINT WINAPI SetInstallScope(MSIHANDLE hInstall) {
7777
return WcaFinalize(ERROR_SUCCESS);
7878
}
7979

80-
81-
extern "C" UINT WINAPI BroadcastEnvironmentUpdate(MSIHANDLE hInstall) {
82-
HRESULT hr = S_OK;
83-
UINT er = ERROR_SUCCESS;
84-
85-
hr = WcaInitialize(hInstall, "BroadcastEnvironmentUpdate");
86-
ExitOnFailure(hr, "Failed to initialize");
87-
88-
SendMessageTimeoutW(HWND_BROADCAST,
89-
WM_SETTINGCHANGE,
90-
0,
91-
(LPARAM) L"Environment",
92-
SMTO_ABORTIFHUNG,
93-
5000,
94-
NULL);
95-
96-
LExit:
97-
er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE;
98-
return WcaFinalize(er);
99-
}
100-
10180
#define AUTHENTICATED_USERS_SID L"S-1-5-11"
10281

10382
extern "C" UINT WINAPI GetLocalizedUserNames(MSIHANDLE hInstall) {

tools/msvs/msi/custom_actions.def tools/msvs/msi/custom_actions/custom_actions.def

-1
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,4 @@ LIBRARY "custom_actions"
22

33
EXPORTS
44
SetInstallScope
5-
BroadcastEnvironmentUpdate
65
GetLocalizedUserNames

tools/msvs/msi/custom_actions.vcxproj tools/msvs/msi/custom_actions/custom_actions.vcxproj

+20-12
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@
112112
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
113113
<ClCompile>
114114
<Optimization>Disabled</Optimization>
115-
<AdditionalIncludeDirectories>$(WixSdkDir)\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
115+
<AdditionalIncludeDirectories>$(PkgWixToolset_WcaUtil)\build\native\include;$(PkgWixToolset_DUtil)\build\native\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
116116
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
117117
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
118118
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
@@ -122,7 +122,7 @@
122122
</ClCompile>
123123
<Link>
124124
<AdditionalDependencies>msi.lib;dutil.lib;wcautil.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
125-
<AdditionalLibraryDirectories>$(WixSdkDir)\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
125+
<AdditionalLibraryDirectories>$(PkgWixToolset_WcaUtil)\build\native\v14\x86;$(PkgWixToolset_DUtil)\build\native\v14\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
126126
<ModuleDefinitionFile>custom_actions.def</ModuleDefinitionFile>
127127
<GenerateDebugInformation>true</GenerateDebugInformation>
128128
<SubSystem>Windows</SubSystem>
@@ -131,7 +131,7 @@
131131
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
132132
<ClCompile>
133133
<Optimization>Disabled</Optimization>
134-
<AdditionalIncludeDirectories>$(WixSdkDir)\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
134+
<AdditionalIncludeDirectories>$(PkgWixToolset_WcaUtil)\build\native\include;$(PkgWixToolset_DUtil)\build\native\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
135135
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
136136
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
137137
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
@@ -141,7 +141,7 @@
141141
</ClCompile>
142142
<Link>
143143
<AdditionalDependencies>msi.lib;dutil.lib;wcautil.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
144-
<AdditionalLibraryDirectories>$(WixSdkDir)\lib\ARM64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
144+
<AdditionalLibraryDirectories>$(PkgWixToolset_WcaUtil)\build\native\v14\ARM64;$(PkgWixToolset_DUtil)\build\native\v14\ARM64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
145145
<ModuleDefinitionFile>custom_actions.def</ModuleDefinitionFile>
146146
<GenerateDebugInformation>true</GenerateDebugInformation>
147147
<SubSystem>Windows</SubSystem>
@@ -150,7 +150,7 @@
150150
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
151151
<ClCompile>
152152
<Optimization>Disabled</Optimization>
153-
<AdditionalIncludeDirectories>$(WixSdkDir)\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
153+
<AdditionalIncludeDirectories>$(PkgWixToolset_WcaUtil)\build\native\include;$(PkgWixToolset_DUtil)\build\native\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
154154
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
155155
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
156156
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
@@ -160,7 +160,7 @@
160160
</ClCompile>
161161
<Link>
162162
<AdditionalDependencies>msi.lib;dutil.lib;wcautil.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
163-
<AdditionalLibraryDirectories>$(WixSdkDir)\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
163+
<AdditionalLibraryDirectories>$(PkgWixToolset_WcaUtil)\build\native\v14\x64;$(PkgWixToolset_DUtil)\build\native\v14\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
164164
<ModuleDefinitionFile>custom_actions.def</ModuleDefinitionFile>
165165
<GenerateDebugInformation>true</GenerateDebugInformation>
166166
<SubSystem>Windows</SubSystem>
@@ -170,7 +170,7 @@
170170
<ClCompile>
171171
<Optimization>MaxSpeed</Optimization>
172172
<IntrinsicFunctions>true</IntrinsicFunctions>
173-
<AdditionalIncludeDirectories>$(WixSdkDir)\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
173+
<AdditionalIncludeDirectories>$(PkgWixToolset_WcaUtil)\build\native\include;$(PkgWixToolset_DUtil)\build\native\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
174174
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
175175
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
176176
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -184,7 +184,7 @@
184184
</ClCompile>
185185
<Link>
186186
<AdditionalDependencies>msi.lib;dutil.lib;wcautil.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
187-
<AdditionalLibraryDirectories>$(WixSdkDir)\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
187+
<AdditionalLibraryDirectories>$(PkgWixToolset_WcaUtil)\build\native\v14\x86;$(PkgWixToolset_DUtil)\build\native\v14\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
188188
<ModuleDefinitionFile>custom_actions.def</ModuleDefinitionFile>
189189
<GenerateDebugInformation>true</GenerateDebugInformation>
190190
<SubSystem>Windows</SubSystem>
@@ -196,7 +196,7 @@
196196
<ClCompile>
197197
<Optimization>MaxSpeed</Optimization>
198198
<IntrinsicFunctions>true</IntrinsicFunctions>
199-
<AdditionalIncludeDirectories>$(WixSdkDir)\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
199+
<AdditionalIncludeDirectories>$(PkgWixToolset_WcaUtil)\build\native\include;$(PkgWixToolset_DUtil)\build\native\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
200200
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
201201
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
202202
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -210,7 +210,7 @@
210210
</ClCompile>
211211
<Link>
212212
<AdditionalDependencies>msi.lib;dutil.lib;wcautil.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
213-
<AdditionalLibraryDirectories>$(WixSdkDir)\lib\ARM64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
213+
<AdditionalLibraryDirectories>$(PkgWixToolset_WcaUtil)\build\native\v14\ARM64;$(PkgWixToolset_DUtil)\build\native\v14\ARM64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
214214
<ModuleDefinitionFile>custom_actions.def</ModuleDefinitionFile>
215215
<GenerateDebugInformation>true</GenerateDebugInformation>
216216
<SubSystem>Windows</SubSystem>
@@ -222,7 +222,7 @@
222222
<ClCompile>
223223
<Optimization>MaxSpeed</Optimization>
224224
<IntrinsicFunctions>true</IntrinsicFunctions>
225-
<AdditionalIncludeDirectories>$(WixSdkDir)\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
225+
<AdditionalIncludeDirectories>$(PkgWixToolset_WcaUtil)\build\native\include;$(PkgWixToolset_DUtil)\build\native\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
226226
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
227227
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
228228
<FunctionLevelLinking>true</FunctionLevelLinking>
@@ -236,7 +236,7 @@
236236
</ClCompile>
237237
<Link>
238238
<AdditionalDependencies>msi.lib;dutil.lib;wcautil.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
239-
<AdditionalLibraryDirectories>$(WixSdkDir)\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
239+
<AdditionalLibraryDirectories>$(PkgWixToolset_WcaUtil)\build\native\v14\x64;$(PkgWixToolset_DUtil)\build\native\v14\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
240240
<ModuleDefinitionFile>custom_actions.def</ModuleDefinitionFile>
241241
<GenerateDebugInformation>true</GenerateDebugInformation>
242242
<SubSystem>Windows</SubSystem>
@@ -254,4 +254,12 @@
254254
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
255255
<ImportGroup Label="ExtensionTargets">
256256
</ImportGroup>
257+
<ItemGroup>
258+
<PackageReference Include="WixToolset.WcaUtil" Version="4.0.0-rc.1" GeneratePathProperty="true" />
259+
<PackageReference Include="WixToolset.DUtil" Version="4.0.0-rc.1" GeneratePathProperty="true" />
260+
</ItemGroup>
261+
<PropertyGroup>
262+
<_NuGetTargetFallbackMoniker>$(_NuGetTargetFallbackMoniker);native,Version=v0.0</_NuGetTargetFallbackMoniker>
263+
<RuntimeIdentifiers>$(RuntimeIdentifiers);win-arm64</RuntimeIdentifiers>
264+
</PropertyGroup>
257265
</Project>

tools/msvs/msi/i18n/en-us.wxl

-43
This file was deleted.

tools/msvs/msi/nodemsi.sln

+12-5
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
1-
2-
Microsoft Visual Studio Solution File, Format Version 11.00
3-
# Visual Studio 2010
4-
Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "nodemsi", "nodemsi.wixproj", "{1D808FF0-B5A9-4BE9-859D-B334B6F48BE2}"
1+
Microsoft Visual Studio Solution File, Format Version 12.00
2+
# Visual Studio Version 16
3+
VisualStudioVersion = 16.0.33027.164
4+
MinimumVisualStudioVersion = 10.0.40219.1
5+
Project("{B7DD6F7E-DEF8-4E67-B5B7-07EF123DB6F0}") = "nodemsi", "nodemsi\nodemsi.wixproj", "{1D808FF0-B5A9-4BE9-859D-B334B6F48BE2}"
6+
ProjectSection(ProjectDependencies) = postProject
7+
{B70585F8-DAB7-40FA-9904-13CF53A73A06} = {B70585F8-DAB7-40FA-9904-13CF53A73A06}
8+
EndProjectSection
59
EndProject
6-
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "custom_actions", "custom_actions.vcxproj", "{B70585F8-DAB7-40FA-9904-13CF53A73A06}"
10+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "custom_actions", "custom_actions\custom_actions.vcxproj", "{B70585F8-DAB7-40FA-9904-13CF53A73A06}"
711
EndProject
812
Global
913
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -43,4 +47,7 @@ Global
4347
GlobalSection(SolutionProperties) = preSolution
4448
HideSolutionNode = FALSE
4549
EndGlobalSection
50+
GlobalSection(ExtensibilityGlobals) = postSolution
51+
SolutionGuid = {FB650322-7A09-471D-A635-F2DBDCEECDB8}
52+
EndGlobalSection
4653
EndGlobal

0 commit comments

Comments
 (0)