Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 0 additions & 21 deletions tools/msvs/msi/custom_actions.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
1 change: 0 additions & 1 deletion tools/msvs/msi/custom_actions.def
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,4 @@ LIBRARY "custom_actions"

EXPORTS
SetInstallScope
BroadcastEnvironmentUpdate
GetLocalizedUserNames
24 changes: 12 additions & 12 deletions tools/msvs/msi/custom_actions.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>$(WixSdkDir)\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(WixSdkDir)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
Expand All @@ -122,7 +122,7 @@
</ClCompile>
<Link>
<AdditionalDependencies>msi.lib;dutil.lib;wcautil.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(WixSdkDir)\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalLibraryDirectories>$(WixSdkDir)\v14\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ModuleDefinitionFile>custom_actions.def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
Expand All @@ -131,7 +131,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>$(WixSdkDir)\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(WixSdkDir)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
Expand All @@ -141,7 +141,7 @@
</ClCompile>
<Link>
<AdditionalDependencies>msi.lib;dutil.lib;wcautil.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(WixSdkDir)\lib\ARM64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalLibraryDirectories>$(WixSdkDir)\v14\ARM64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ModuleDefinitionFile>custom_actions.def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
Expand All @@ -150,7 +150,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>$(WixSdkDir)\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(WixSdkDir)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
Expand All @@ -160,7 +160,7 @@
</ClCompile>
<Link>
<AdditionalDependencies>msi.lib;dutil.lib;wcautil.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(WixSdkDir)\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalLibraryDirectories>$(WixSdkDir)\v14\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ModuleDefinitionFile>custom_actions.def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
Expand All @@ -170,7 +170,7 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>$(WixSdkDir)\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(WixSdkDir)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
Expand All @@ -184,7 +184,7 @@
</ClCompile>
<Link>
<AdditionalDependencies>msi.lib;dutil.lib;wcautil.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(WixSdkDir)\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalLibraryDirectories>$(WixSdkDir)\v14\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ModuleDefinitionFile>custom_actions.def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
Expand All @@ -196,7 +196,7 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>$(WixSdkDir)\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(WixSdkDir)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
Expand All @@ -210,7 +210,7 @@
</ClCompile>
<Link>
<AdditionalDependencies>msi.lib;dutil.lib;wcautil.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(WixSdkDir)\lib\ARM64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalLibraryDirectories>$(WixSdkDir)\v14\ARM64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ModuleDefinitionFile>custom_actions.def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
Expand All @@ -222,7 +222,7 @@
<ClCompile>
<Optimization>MaxSpeed</Optimization>
<IntrinsicFunctions>true</IntrinsicFunctions>
<AdditionalIncludeDirectories>$(WixSdkDir)\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(WixSdkDir)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
Expand All @@ -236,7 +236,7 @@
</ClCompile>
<Link>
<AdditionalDependencies>msi.lib;dutil.lib;wcautil.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(WixSdkDir)\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalLibraryDirectories>$(WixSdkDir)\v14\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ModuleDefinitionFile>custom_actions.def</ModuleDefinitionFile>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
Expand Down
55 changes: 27 additions & 28 deletions tools/msvs/msi/i18n/en-us.wxl
Original file line number Diff line number Diff line change
@@ -1,43 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<WixLocalization Culture="en-us" xmlns="http://schemas.microsoft.com/wix/2006/localization">
<WixLocalization Culture="en-us" xmlns="http://wixtoolset.org/schemas/v4/wxl">
<!-- See https://msdn.microsoft.com/en-us/goglobal/bb964664.aspx -->
<String Id="LocaleId">1033</String>
<String Id="LocaleId" Value="1033"/>

<String Id="WelcomeDlgDescription">The Setup Wizard will install [ProductName] on your computer.</String>
<String Id="InstallDirDlgDescription">Choose a custom location or click Next to install.</String>
<String Id="WelcomeDlgDescription" Value="The Setup Wizard will install [ProductName] on your computer."/>
<String Id="InstallDirDlgDescription" Value="Choose a custom location or click Next to install."/>

<String Id="MajorUpgrade_DowngradeErrorMessage">A later version of [ProductName] is already installed. Setup will now exit.</String>
<String Id="MajorUpgrade_DowngradeErrorMessage" Value="A later version of [ProductName] is already installed. Setup will now exit."/>

<String Id="NativeToolsDlg_Title">[ProductName] Setup</String>
<String Id="NativeToolsDlgTitle">{\WixUI_Font_Title}Tools for Native Modules</String>
<String Id="NativeToolsDlgDescription">Optionally install the tools necessary to compile native modules.</String>
<String Id="NativeToolsDlgBannerBitmap">WixUI_Bmp_Banner</String>
<String Id="NativeToolsDlgIntro">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.</String>
<String Id="NativeToolsDlgInstallCheckbox">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.</String>
<String Id="NativeToolsDlgManualDetails">Alternatively, follow the instructions at <![CDATA[<a href="https://github.com/nodejs/node-gyp#on-windows">https://github.com/nodejs/node-gyp#on-windows</a>]]> to install the dependencies yourself.</String>
<String Id="NativeToolsDlg_Title" Value="[ProductName] Setup"/>
<String Id="NativeToolsDlgTitle" Value="{\WixUI_Font_Title}Tools for Native Modules"/>
<String Id="NativeToolsDlgDescription" Value="Optionally install the tools necessary to compile native modules."/>
<String Id="NativeToolsDlgBannerBitmap" Value="WixUI_Bmp_Banner"/>
<String Id="NativeToolsDlgIntro" Value="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."/>
<String Id="NativeToolsDlgInstallCheckbox" Value="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."/>
<String Id="NativeToolsDlgManualDetails" Value="Alternatively, follow the instructions at &lt;a href=&quot;https://github.com/nodejs/node-gyp#on-windows&quot;&gt;https://github.com/nodejs/node-gyp#on-windows&lt;/a&gt; to install the dependencies yourself."/>

<!-- References like [ProductName] or $(var.ProductName) don't seem to work in Title attributes -->
<String Id="NodeRuntime_Title">Node.js runtime</String>
<String Id="NodeRuntime_Description">Install the core [ProductName] runtime (node.exe).</String>
<String Id="NodeRuntime_Title" Value="Node.js runtime"/>
<String Id="NodeRuntime_Description" Value="Install the core [ProductName] runtime (node.exe)."/>

<String Id="npm_Title">npm package manager</String>
<String Id="npm_Description">Install npm, the recommended package manager for [ProductName].</String>
<String Id="npm_Title" Value="npm package manager"/>
<String Id="npm_Description" Value="Install npm, the recommended package manager for [ProductName]."/>

<String Id="corepack_Title">corepack manager</String>
<String Id="corepack_Description">Install corepack, the universal package manager for [ProductName].</String>
<String Id="corepack_Title" Value="corepack manager"/>
<String Id="corepack_Description" Value="Install corepack, the universal package manager for [ProductName]."/>

<String Id="DocumentationShortcuts_Title">Online documentation shortcuts</String>
<String Id="DocumentationShortcuts_Description">Add start menu entries that link the online documentation for [ProductName] [FullVersion] and the [ProductName] website.</String>
<String Id="DocumentationShortcuts_Title" Value="Online documentation shortcuts"/>
<String Id="DocumentationShortcuts_Description" Value="Add start menu entries that link the online documentation for [ProductName] [FullVersion] and the [ProductName] website."/>

<String Id="EnvironmentPath_Title">Add to PATH</String>
<String Id="EnvironmentPath_Description">Add [ProductName], npm, and modules that were globally installed by npm to the PATH environment variable.</String>
<String Id="EnvironmentPath_Title" Value="Add to PATH"/>
<String Id="EnvironmentPath_Description" Value="Add [ProductName], npm, and modules that were globally installed by npm to the PATH environment variable."/>

<String Id="EnvironmentPathNode_Title">Node.js and npm</String>
<String Id="EnvironmentPathNode_Description">Add [ProductName] and npm (if installed) to the PATH environment variable.</String>
<String Id="EnvironmentPathNode_Title" Value="Node.js and npm"/>
<String Id="EnvironmentPathNode_Description" Value="Add [ProductName] and npm (if installed) to the PATH environment variable."/>

<String Id="EnvironmentPathNpmModules_Title">npm modules</String>
<String Id="EnvironmentPathNpmModules_Description">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.</String>
<String Id="EnvironmentPathNpmModules_Title" Value="npm modules"/>
<String Id="EnvironmentPathNpmModules_Description" Value="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."/>

<!-- References like [ProductName] are not resolved for Property tags -->
<String Id="WIXUI_EXITDIALOGOPTIONALTEXT">Node.js has been successfully installed.</String>
<String Id="WIXUI_EXITDIALOGOPTIONALTEXT" Value="Node.js has been successfully installed."/>
</WixLocalization>
89 changes: 89 additions & 0 deletions tools/msvs/msi/nodemsi.ps1
Original file line number Diff line number Diff line change
@@ -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
Loading