From 28122a87921c06c85d632a0c76fe848eecea862c Mon Sep 17 00:00:00 2001 From: StefanStojanovic Date: Mon, 14 Nov 2022 10:03:58 +0100 Subject: [PATCH] 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. These changes use WiX4 preview 1 which is not an official release, but there should be no major changes before WiX4 is GA. --- tools/msvs/msi/custom_actions.cc | 21 ----- tools/msvs/msi/custom_actions.def | 1 - tools/msvs/msi/custom_actions.vcxproj | 24 ++--- tools/msvs/msi/i18n/en-us.wxl | 55 ++++++------ tools/msvs/msi/nodemsi.ps1 | 89 +++++++++++++++++++ tools/msvs/msi/nodemsi.sln | 46 ---------- tools/msvs/msi/nodemsi.wixproj | 93 -------------------- tools/msvs/msi/product.wxs | 122 ++++++++++++-------------- vcbuild.bat | 30 ++----- 9 files changed, 189 insertions(+), 292 deletions(-) create mode 100644 tools/msvs/msi/nodemsi.ps1 delete mode 100644 tools/msvs/msi/nodemsi.sln delete mode 100644 tools/msvs/msi/nodemsi.wixproj diff --git a/tools/msvs/msi/custom_actions.cc b/tools/msvs/msi/custom_actions.cc index 32811dcb19469d..d747823423eeb5 100644 --- a/tools/msvs/msi/custom_actions.cc +++ b/tools/msvs/msi/custom_actions.cc @@ -77,27 +77,6 @@ extern "C" UINT WINAPI SetInstallScope(MSIHANDLE hInstall) { return WcaFinalize(ERROR_SUCCESS); } - -extern "C" 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); -} - #define AUTHENTICATED_USERS_SID L"S-1-5-11" extern "C" UINT WINAPI GetLocalizedUserNames(MSIHANDLE hInstall) { diff --git a/tools/msvs/msi/custom_actions.def b/tools/msvs/msi/custom_actions.def index 93f2a28f45e45e..5561777ae77539 100644 --- a/tools/msvs/msi/custom_actions.def +++ b/tools/msvs/msi/custom_actions.def @@ -2,5 +2,4 @@ LIBRARY "custom_actions" EXPORTS SetInstallScope -BroadcastEnvironmentUpdate GetLocalizedUserNames diff --git a/tools/msvs/msi/custom_actions.vcxproj b/tools/msvs/msi/custom_actions.vcxproj index 2fed47b6e4a781..a22b48c92d2fdf 100644 --- a/tools/msvs/msi/custom_actions.vcxproj +++ b/tools/msvs/msi/custom_actions.vcxproj @@ -112,7 +112,7 @@ Disabled - $(WixSdkDir)\inc;%(AdditionalIncludeDirectories) + $(WixSdkDir)\include;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug @@ -122,7 +122,7 @@ msi.lib;dutil.lib;wcautil.lib;version.lib;%(AdditionalDependencies) - $(WixSdkDir)\lib\x86;%(AdditionalLibraryDirectories) + $(WixSdkDir)\v14\x86;%(AdditionalLibraryDirectories) custom_actions.def true Windows @@ -131,7 +131,7 @@ Disabled - $(WixSdkDir)\inc;%(AdditionalIncludeDirectories) + $(WixSdkDir)\include;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug @@ -141,7 +141,7 @@ msi.lib;dutil.lib;wcautil.lib;version.lib;%(AdditionalDependencies) - $(WixSdkDir)\lib\ARM64;%(AdditionalLibraryDirectories) + $(WixSdkDir)\v14\ARM64;%(AdditionalLibraryDirectories) custom_actions.def true Windows @@ -150,7 +150,7 @@ Disabled - $(WixSdkDir)\inc;%(AdditionalIncludeDirectories) + $(WixSdkDir)\include;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug @@ -160,7 +160,7 @@ msi.lib;dutil.lib;wcautil.lib;version.lib;%(AdditionalDependencies) - $(WixSdkDir)\lib\x64;%(AdditionalLibraryDirectories) + $(WixSdkDir)\v14\x64;%(AdditionalLibraryDirectories) custom_actions.def true Windows @@ -170,7 +170,7 @@ MaxSpeed true - $(WixSdkDir)\inc;%(AdditionalIncludeDirectories) + $(WixSdkDir)\include;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) MultiThreaded true @@ -184,7 +184,7 @@ msi.lib;dutil.lib;wcautil.lib;version.lib;%(AdditionalDependencies) - $(WixSdkDir)\lib\x86;%(AdditionalLibraryDirectories) + $(WixSdkDir)\v14\x86;%(AdditionalLibraryDirectories) custom_actions.def true Windows @@ -196,7 +196,7 @@ MaxSpeed true - $(WixSdkDir)\inc;%(AdditionalIncludeDirectories) + $(WixSdkDir)\include;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) MultiThreaded true @@ -210,7 +210,7 @@ msi.lib;dutil.lib;wcautil.lib;version.lib;%(AdditionalDependencies) - $(WixSdkDir)\lib\ARM64;%(AdditionalLibraryDirectories) + $(WixSdkDir)\v14\ARM64;%(AdditionalLibraryDirectories) custom_actions.def true Windows @@ -222,7 +222,7 @@ MaxSpeed true - $(WixSdkDir)\inc;%(AdditionalIncludeDirectories) + $(WixSdkDir)\include;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) MultiThreaded true @@ -236,7 +236,7 @@ msi.lib;dutil.lib;wcautil.lib;version.lib;%(AdditionalDependencies) - $(WixSdkDir)\lib\x64;%(AdditionalLibraryDirectories) + $(WixSdkDir)\v14\x64;%(AdditionalLibraryDirectories) custom_actions.def true Windows diff --git a/tools/msvs/msi/i18n/en-us.wxl b/tools/msvs/msi/i18n/en-us.wxl index dc69f218240149..5074d5a43125f7 100644 --- a/tools/msvs/msi/i18n/en-us.wxl +++ b/tools/msvs/msi/i18n/en-us.wxl @@ -1,43 +1,42 @@ - - + - 1033 + - The Setup Wizard will install [ProductName] on your computer. - Choose a custom location or click Next to install. + + - A later version of [ProductName] is already installed. Setup will now exit. + - [ProductName] Setup - {\WixUI_Font_Title}Tools for Native Modules - Optionally install the tools necessary to compile native modules. - WixUI_Bmp_Banner - Some npm modules need to be compiled from C/C++ when installing. If you want to be able to install such modules, some tools (Python and Visual Studio Build Tools) need to be installed. - Automatically install the necessary tools. Note that this will also install Chocolatey. The script will pop-up in a new window after the installation completes. - Alternatively, follow the instructions at https://github.com/nodejs/node-gyp#on-windows]]> to install the dependencies yourself. + + + + + + + - Node.js runtime - Install the core [ProductName] runtime (node.exe). + + - npm package manager - Install npm, the recommended package manager for [ProductName]. + + - corepack manager - Install corepack, the universal package manager for [ProductName]. + + - Online documentation shortcuts - Add start menu entries that link the online documentation for [ProductName] [FullVersion] and the [ProductName] website. + + - Add to PATH - Add [ProductName], npm, and modules that were globally installed by npm to the PATH environment variable. + + - Node.js and npm - Add [ProductName] and npm (if installed) to the PATH environment variable. + + - npm modules - Add modules that are installed globally by npm to the PATH environment variable. This option works for the current user only; other users need to update their PATH manually. + + - Node.js has been successfully installed. + diff --git a/tools/msvs/msi/nodemsi.ps1 b/tools/msvs/msi/nodemsi.ps1 new file mode 100644 index 00000000000000..17636c15078d00 --- /dev/null +++ b/tools/msvs/msi/nodemsi.ps1 @@ -0,0 +1,89 @@ +param ( + [Parameter(Mandatory=$true)] $CustomActionsProjectFile, + [Parameter(Mandatory=$true)] $MsbSdk, + [Parameter(Mandatory=$true)] $PlatformToolset, + [Parameter(Mandatory=$true)] $Platform, + [Parameter(Mandatory=$true)] $NpmDirectory, + [Parameter(Mandatory=$true)] $NpmWxs, + [Parameter(Mandatory=$true)] $CorepackDirectory, + [Parameter(Mandatory=$true)] $CorepackWxs, + [Parameter(Mandatory=$true)] $ProductVersion, + [Parameter(Mandatory=$true)] $FullVersion, + [Parameter(Mandatory=$true)] $DistTypeDir, + [Parameter(Mandatory=$true)] $ProjectDir, + [Parameter(Mandatory=$true)] $Configuration, + [Parameter(Mandatory=$true)] $CustomActionsTargetDir, + [Parameter(Mandatory=$true)] $ProductWxs, + [Parameter(Mandatory=$true)] $EnUsWxl, + [Parameter(Mandatory=$true)] $NodeMsi +) + +# Directory and file parameters +$RootDirectory = "$PSScriptRoot/wix" + +$SdkZip = "$RootDirectory/WixToolset.Sdk.zip" +$HeatZip = "$RootDirectory/WixToolset.Heat.zip" +$WcaUtilZip = "$RootDirectory/WixToolset.WcaUtil.zip" +$DUtilZip = "$RootDirectory/WixToolset.DUtil.zip" +$UtilExtZip = "$RootDirectory/WixToolset.Util.wixext.zip" +$UiExtZip = "$RootDirectory/WixToolset.UI.wixext.zip" + +$SdkExport = "$RootDirectory/sdk" +$HeatExport = "$RootDirectory/heat" +$WcaAndDUtilExport = "$RootDirectory/utils" +$UtilExtExport = "$RootDirectory/util" +$UiExtExport = "$RootDirectory/ui" + +$WixFile = "$SdkExport/tools/net472/x64/wix.exe" +$HeatFile = "$HeatExport/tools/net472/x64/heat.exe" +$WcaAndDUtilDirectory = "$WcaAndDUtilExport/build/native" +$UtilExtFile = "$UtilExtExport/wixext4/WixToolset.Util.wixext.dll" +$UiExtFile = "$UiExtExport/wixext4/WixToolset.UI.wixext.dll" + +# WiX NuGet package parameters +$wixVersion = "4.0.0-preview.1" +$SdkUri = "https://www.nuget.org/api/v2/package/WixToolset.Sdk/$wixVersion" +$HeatUri = "https://www.nuget.org/api/v2/package/WixToolset.Heat/$wixVersion" +$WcaUtilUri = "https://www.nuget.org/api/v2/package/WixToolset.WcaUtil/$wixVersion" +$DUtilUri = "https://www.nuget.org/api/v2/package/WixToolset.DUtil/$wixVersion" +$UtilUri = "https://www.nuget.org/api/v2/package/WixToolset.Util.wixext/$wixVersion" +$UiUri = "https://www.nuget.org/api/v2/package/WixToolset.UI.wixext/$wixVersion" + +# Create clean root directories +if (Get-Item $RootDirectory) { + Remove-Item $RootDirectory -Recurse +} +New-Item $RootDirectory -ItemType Directory + +# Download required WiX NuGet packages +Invoke-WebRequest -Uri $SdkUri -OutFile $SdkZip +Invoke-WebRequest -Uri $HeatUri -OutFile $heatZip +Invoke-WebRequest -Uri $WcaUtilUri -OutFile $WcaUtilZip +Invoke-WebRequest -Uri $DUtilUri -OutFile $DUtilZip +Invoke-WebRequest -Uri $UtilUri -OutFile $UtilExtZip +Invoke-WebRequest -Uri $UiUri -OutFile $UiExtZip + +# Export downloaded WiX NuGet packages +Expand-Archive -Path $SdkZip -DestinationPath $SdkExport +Expand-Archive -Path $HeatZip -DestinationPath $HeatExport +Expand-Archive -Path $WcaUtilZip -DestinationPath $WcaAndDUtilExport +Expand-Archive -Path $DUtilZip -DestinationPath $WcaAndDUtilExport +Expand-Archive -Path $UtilExtZip -DestinationPath $UtilExtExport +Expand-Archive -Path $UiExtZip -DestinationPath $UiExtExport + +# Build node custom actions project +$process = Start-Process -FilePath "msbuild" -ArgumentList "$CustomActionsProjectFile /m /t:Clean,Build $MsbSdk /p:PlatformToolset=$PlatformToolset /p:WixSdkDir=`"$WcaAndDUtilDirectory`" /p:Configuration=$Configuration /p:Platform=$Platform /p:NodeVersion=$ProductVersion /p:FullVersion=$FullVersion /p:DistTypeDir=$DistTypeDir /clp:NoSummary;NoItemAndPropertyList;Verbosity=minimal /nologo" -PassThru +$process.WaitForExit() + +# Run harvest tool (heat.exe) for npm and corepack +$process = Start-Process -FilePath $HeatFile -ArgumentList "dir $NpmDirectory -var var.NpmSourceDir -cg NpmSourceFiles -dr NodeModulesFolder -gg -out $NpmWxs" -PassThru +$process.WaitForExit() +$process = Start-Process -FilePath $HeatFile -ArgumentList "dir $CorepackDirectory -var var.CorepackSourceDir -cg CorepackSourceFiles -dr NodeModulesFolder -gg -out $CorepackWxs" -PassThru +$process.WaitForExit() + +# Run wix tool (wix.exe) for building the installer +$process = Start-Process -FilePath $WixFile -ArgumentList "build -ext $UtilExtFile -ext $UiExtFile -d ProductVersion=$ProductVersion -d FullVersion=$FullVersion -d DistTypeDir=$DistTypeDir -d NpmSourceDir=$NpmDirectory\ -d CorepackSourceDir=$CorepackDirectory\ -d ProgramFilesFolderId=ProgramFiles64Folder -d ProjectDir=$ProjectDir -d Configuration=$Configuration -d custom_actions.TargetDir=$CustomActionsTargetDir -d custom_actions.TargetName=custom_actions $ProductWxs $NpmWxs $CorepackWxs $EnUsWxl -o $NodeMsi" -PassThru +$process.WaitForExit() + +# Delete everything +Remove-Item $RootDirectory -Recurse \ No newline at end of file diff --git a/tools/msvs/msi/nodemsi.sln b/tools/msvs/msi/nodemsi.sln deleted file mode 100644 index 86b4b10dcb043f..00000000000000 --- a/tools/msvs/msi/nodemsi.sln +++ /dev/null @@ -1,46 +0,0 @@ - -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|ARM64 = Debug|ARM64 - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|ARM64 = Release|ARM64 - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {1D808FF0-B5A9-4BE9-859D-B334B6F48BE2}.Debug|ARM64.ActiveCfg = Debug|arm64 - {1D808FF0-B5A9-4BE9-859D-B334B6F48BE2}.Debug|ARM64.Build.0 = Debug|arm64 - {1D808FF0-B5A9-4BE9-859D-B334B6F48BE2}.Debug|x64.ActiveCfg = Debug|x64 - {1D808FF0-B5A9-4BE9-859D-B334B6F48BE2}.Debug|x64.Build.0 = Debug|x64 - {1D808FF0-B5A9-4BE9-859D-B334B6F48BE2}.Debug|x86.ActiveCfg = Debug|x86 - {1D808FF0-B5A9-4BE9-859D-B334B6F48BE2}.Debug|x86.Build.0 = Debug|x86 - {1D808FF0-B5A9-4BE9-859D-B334B6F48BE2}.Release|ARM64.ActiveCfg = Release|arm64 - {1D808FF0-B5A9-4BE9-859D-B334B6F48BE2}.Release|ARM64.Build.0 = Release|arm64 - {1D808FF0-B5A9-4BE9-859D-B334B6F48BE2}.Release|x64.ActiveCfg = Release|x64 - {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|ARM64.ActiveCfg = Debug|ARM64 - {B70585F8-DAB7-40FA-9904-13CF53A73A06}.Debug|ARM64.Build.0 = Debug|ARM64 - {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|ARM64.ActiveCfg = Release|ARM64 - {B70585F8-DAB7-40FA-9904-13CF53A73A06}.Release|ARM64.Build.0 = Release|ARM64 - {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 - EndGlobalSection -EndGlobal diff --git a/tools/msvs/msi/nodemsi.wixproj b/tools/msvs/msi/nodemsi.wixproj deleted file mode 100644 index 0cf215daca5978..00000000000000 --- a/tools/msvs/msi/nodemsi.wixproj +++ /dev/null @@ -1,93 +0,0 @@ - - - - Debug - x86 - 3.5 - {1d808ff0-b5a9-4be9-859d-b334b6f48be2} - 2.0 - node-v$(FullVersion)-$(Platform) - Package - True - $(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets - $(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets - 0.0.0.0 - - - ..\..\..\ - obj\$(Configuration)\ - Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NpmSourceDir=..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\npm\;CorepackSourceDir=..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\corepack\;ProgramFilesFolderId=ProgramFilesFolder - - - ..\..\..\ - obj\$(Configuration)\ - Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NpmSourceDir=..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\npm\;CorepackSourceDir=..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\corepack\;ProgramFilesFolderId=ProgramFilesFolder - - - ..\..\..\ - obj\$(Configuration)\ - Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NpmSourceDir=..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\npm\;CorepackSourceDir=..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\corepack\;ProgramFilesFolderId=ProgramFiles64Folder - en-US - - - ..\..\..\ - obj\$(Configuration)\ - Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NpmSourceDir=..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\npm\;CorepackSourceDir=..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\corepack\;ProgramFilesFolderId=ProgramFiles64Folder - - - ..\..\..\ - obj\$(Configuration)\ - Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NpmSourceDir=..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\npm\;CorepackSourceDir=..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\corepack\;ProgramFilesFolderId=ProgramFiles64Folder - - - ..\..\..\ - obj\$(Configuration)\ - Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NpmSourceDir=..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\npm\;CorepackSourceDir=..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\corepack\;ProgramFilesFolderId=ProgramFiles64Folder - - - True - - - - - npm.wxs - - - corepack.wxs - - - - - $(WixExtDir)\WixUIExtension.dll - WixUIExtension - - - $(WixExtDir)\WiXUtilExtension.dll - WiXUtilExtension - - - - - - - - custom_actions - {b70585f8-dab7-40fa-9904-13cf53a73a06} - True - True - Binaries;Content;Satellites - INSTALLFOLDER - - - - - - - - - - - move "!(TargetPath)" "$(TargetDir)\$(TargetFileName)" - move "!(TargetPdbPath)" "$(TargetDir)\$(TargetPdbName)" - - diff --git a/tools/msvs/msi/product.wxs b/tools/msvs/msi/product.wxs index c6984777fac3fa..65ad9f629990ee 100755 --- a/tools/msvs/msi/product.wxs +++ b/tools/msvs/msi/product.wxs @@ -1,6 +1,6 @@ - - + @@ -11,21 +11,15 @@ - + UpgradeCode="47c07a3a-42ef-4213-a85d-8f5a59077c28" + InstallerVersion="200" + Compressed="yes"> - - - - = 603) OR (VersionNT >= 602 AND MsiNTProductType <> 1)]]> - + @@ -46,10 +40,9 @@ - - - - + + + + AllowAbsent="no"> @@ -79,7 +72,6 @@ - - - + - + - @@ -197,13 +187,13 @@ - + - - + - + - - - + + + @@ -383,43 +373,43 @@ - 1 + - NOT Installed - Installed AND PATCH - 1 - LicenseAccepted = "1" - 1 - 1 - 1 - 1 - 1 - NOT Installed OR WixUI_InstallMode = "Change" - Installed AND NOT PATCH - Installed AND PATCH - 1 - 1 - 1 - 1 - 1 - Installed - NOT Installed - 1 - 1 - 1 - NATIVETOOLSCHECKBOX = 1 - 1 + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + diff --git a/vcbuild.bat b/vcbuild.bat index 0bae0ea282aa10..68593bf04feb3b 100644 --- a/vcbuild.bat +++ b/vcbuild.bat @@ -253,18 +253,8 @@ echo Looking for Visual Studio 2022 if not defined target_env set "VCINSTALLDIR=" call tools\msvs\vswhere_usability_wrapper.cmd "[17.0,18.0)" "prerelease" if "_%VCINSTALLDIR%_" == "__" goto vs-set-2019 -set "WIXSDKDIR=%WIX%\SDK\VS2017" if defined msi ( - echo Looking for WiX installation for Visual Studio 2022... - if not exist "%WIXSDKDIR%" ( - echo Failed to find WiX install for Visual Studio 2022 - echo VS2022 support for WiX is only present starting at version 3.XX - goto vs-set-2019 - ) - if not exist "%VCINSTALLDIR%\..\MSBuild\Microsoft\WiX" ( - echo Failed to find the WiX Toolset Visual Studio 2022 Extension - goto vs-set-2019 - ) + echo Using WiX4, no need for preinstallation ) @rem check if VS2022 is already setup, and for the requested arch if "_%VisualStudioVersion%_" == "_17.0_" if "_%VSCMD_ARG_TGT_ARCH%_"=="_%target_arch%_" goto found_vs2022 @@ -293,18 +283,8 @@ echo Looking for Visual Studio 2019 if not defined target_env set "VCINSTALLDIR=" call tools\msvs\vswhere_usability_wrapper.cmd "[16.0,17.0)" "prerelease" if "_%VCINSTALLDIR%_" == "__" goto msbuild-not-found -set "WIXSDKDIR=%WIX%\SDK\VS2017" if defined msi ( - echo Looking for WiX installation for Visual Studio 2019... - if not exist "%WIXSDKDIR%" ( - echo Failed to find WiX install for Visual Studio 2019 - echo VS2019 support for WiX is only present starting at version 3.11 - goto msbuild-not-found - ) - if not exist "%VCINSTALLDIR%\..\MSBuild\Microsoft\WiX" ( - echo Failed to find the WiX Toolset Visual Studio 2019 Extension - goto msbuild-not-found - ) + echo Using WiX4, no need for preinstallation ) @rem check if VS2019 is already setup, and for the requested arch if "_%VisualStudioVersion%_" == "_16.0_" if "_%VSCMD_ARG_TGT_ARCH%_"=="_%target_arch%_" goto found_vs2019 @@ -410,13 +390,13 @@ if not defined licensertf goto stage_package set "use_x64_node_exe=false" if "%target_arch%"=="arm64" if "%PROCESSOR_ARCHITECTURE%"=="AMD64" set "use_x64_node_exe=true" +set "x64_node_exe=temp-vcbuild\node-x64-cross-compiling.exe" if "%use_x64_node_exe%"=="true" ( echo Cross-compilation to ARM64 detected. We'll use the x64 Node executable for license2rtf. - if not defined "%x64_node_exe%" set "x64_node_exe=temp-vcbuild\node-x64-cross-compiling.exe" if not exist "%x64_node_exe%" ( echo Downloading x64 node.exe... if not exist "temp-vcbuild" mkdir temp-vcbuild - powershell -c "Invoke-WebRequest -Uri 'https://nodejs.org/dist/latest/win-x64/node.exe' -OutFile 'temp-vcbuild\node-x64-cross-compiling.exe'" + powershell -c "Invoke-WebRequest -Uri 'https://nodejs.org/dist/latest/win-x64/node.exe' -OutFile '%x64_node_exe%'" ) if not exist "%x64_node_exe%" ( echo Could not find the Node executable at the given x64_node_exe path. Aborting. @@ -526,7 +506,7 @@ if not defined msi goto install-doctools echo Building node-v%FULLVERSION%-%target_arch%.msi set "msbsdk=" if defined WindowsSDKVersion set "msbsdk=/p:WindowsTargetPlatformVersion=%WindowsSDKVersion:~0,-1%" -msbuild "%~dp0tools\msvs\msi\nodemsi.sln" /m /t:Clean,Build %msbsdk% /p:PlatformToolset=%PLATFORM_TOOLSET% /p:WixSdkDir="%WIXSDKDIR%" /p:Configuration=%config% /p:Platform=%target_arch% /p:NodeVersion=%NODE_VERSION% /p:FullVersion=%FULLVERSION% /p:DistTypeDir=%DISTTYPEDIR% /clp:NoSummary;NoItemAndPropertyList;Verbosity=minimal /nologo +powershell %~dp0tools\msvs\msi\nodemsi.ps1 -CustomActionsProjectFile "%~dp0tools\msvs\msi\custom_actions.vcxproj" -MsbSdk %msbsdk% -PlatformToolset %PLATFORM_TOOLSET% -Platform %target_arch% -NpmDirectory "%~dp0Release\node-v%FULLVERSION%-win-%target_arch%\node_modules\npm" -NpmWxs "%~dp0npm.wxs" -CorepackDirectory "%~dp0Release\node-v%FULLVERSION%-win-%target_arch%\node_modules\corepack" -CorepackWxs "%~dp0corepack.wxs" -ProductVersion %NODE_VERSION% -FullVersion %FULLVERSION% -DistTypeDir %DISTTYPEDIR% -ProjectDir %~dp0tools\msvs\msi\ -Configuration %config% -CustomActionsTargetDir %~dp0tools\msvs\msi\%target_arch%\%config%\ -ProductWxs %~dp0tools\msvs\msi\product.wxs -EnUsWxl %~dp0tools\msvs\msi\i18n\en-us.wxl -NodeMsi %~dp0node-v%FULLVERSION%-%target_arch%.msi > nul if errorlevel 1 goto exit if not defined sign goto upload