diff options
author | João Reis <reis@janeasystems.com> | 2018-08-29 23:22:51 +0100 |
---|---|---|
committer | João Reis <reis@janeasystems.com> | 2018-09-12 03:17:48 +0100 |
commit | 39937938d705413ea438c9d4695953b5164557ef (patch) | |
tree | 163cad0be09dc4d3e98fb7b94f09dcbb386bc057 /tools | |
parent | 54e76fb873027cc6089bf8d7359d188d3687909e (diff) | |
download | node-new-39937938d705413ea438c9d4695953b5164557ef.tar.gz |
win,msi: install tools for native modules
Add a dialog during installation with information about native
modules that can optionally run a Boxstarter script at the end of the
installation. This script can also be run from Start menu.
Fixes: https://github.com/nodejs/node/issues/22311
PR-URL: https://github.com/nodejs/node/pull/22645
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/msvs/install_tools/install_tools.bat | 25 | ||||
-rw-r--r-- | tools/msvs/install_tools/install_tools.txt | 3 | ||||
-rw-r--r-- | tools/msvs/msi/i18n/en-us.wxl | 8 | ||||
-rwxr-xr-x | tools/msvs/msi/product.wxs | 43 |
4 files changed, 77 insertions, 2 deletions
diff --git a/tools/msvs/install_tools/install_tools.bat b/tools/msvs/install_tools/install_tools.bat new file mode 100644 index 0000000000..6bef8ca5b6 --- /dev/null +++ b/tools/msvs/install_tools/install_tools.bat @@ -0,0 +1,25 @@ +@echo off + +echo ==================================================== +echo Tools for Node.js Native Modules Installation Script +echo ==================================================== +echo. +echo This Boxstarter script will install Python and the Visual Studio Build Tools, +echo necessary to compile Node.js native modules. All necessary Windows updates +echo will also be installed. +echo. +echo This will require about 3 Gb of free disk space, plus any space necessary to +echo install Windows updates. +echo. +echo This will take a while to run. Your computer may reboot during the +echo installation, and will resume automatically. +echo. +echo Please close all open programs for the duration of the installation. +echo. +echo You can close this window to stop now. This script can be invoked from the +echo Start menu. Detailed instructions to install these tools manually are +echo available at https://github.com/nodejs/node-gyp#on-windows +echo. +pause + +"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://boxstarter.org/bootstrapper.ps1')); get-boxstarter -Force; Install-BoxstarterPackage -PackageName '%~dp0\install_tools.txt'" diff --git a/tools/msvs/install_tools/install_tools.txt b/tools/msvs/install_tools/install_tools.txt new file mode 100644 index 0000000000..baf530a774 --- /dev/null +++ b/tools/msvs/install_tools/install_tools.txt @@ -0,0 +1,3 @@ +choco upgrade -y python2 +choco upgrade -y visualstudio2017buildtools +choco upgrade -y visualstudio2017-workload-vctools diff --git a/tools/msvs/msi/i18n/en-us.wxl b/tools/msvs/msi/i18n/en-us.wxl index 86da6ecc40..71c1701491 100644 --- a/tools/msvs/msi/i18n/en-us.wxl +++ b/tools/msvs/msi/i18n/en-us.wxl @@ -8,6 +8,14 @@ <String Id="MajorUpgrade_DowngradeErrorMessage">A later version of [ProductName] is already installed. Setup will now exit.</String> + <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 2 and Visual Studio Build Tools) need to be installed.</String> + <String Id="NativeToolsDlgInstallCheckbox">Automatically install the necessary tools. 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> + <!-- 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> diff --git a/tools/msvs/msi/product.wxs b/tools/msvs/msi/product.wxs index e9e4e33751..ad48fedafd 100755 --- a/tools/msvs/msi/product.wxs +++ b/tools/msvs/msi/product.wxs @@ -72,6 +72,8 @@ <ComponentRef Id="NodeVarsScript"/> <ComponentRef Id="NodeStartMenu"/> <ComponentRef Id="AppData" /> + <ComponentRef Id="InstallToolsBat" /> + <ComponentRef Id="InstallToolsTxt" /> <ComponentGroupRef Id="Product.Generated"/> <Feature Id="NodePerfCtrSupport" @@ -162,6 +164,14 @@ <File Id="nodevars.bat" KeyPath="yes" Source="$(var.RepoDir)\tools\msvs\nodevars.bat"/> </Component> + <Component Id="InstallToolsBat"> + <File Id="InstallToolsBat" KeyPath="yes" Source="$(var.RepoDir)\tools\msvs\install_tools\install_tools.bat"/> + </Component> + + <Component Id="InstallToolsTxt"> + <File Id="InstallToolsTxt" Source="$(var.RepoDir)\tools\msvs\install_tools\install_tools.txt"/> + </Component> + <?if $(var.NoPerfCtr) != 1 ?> <Component Id="NodePerfCtrSupport"> <File Id="node_perfctr_provider_man" Name="node_perfctr_provider.man" Source="$(var.RepoDir)\src\res\node_perfctr_provider.man"> @@ -195,6 +205,12 @@ Arguments='/k "[INSTALLDIR]nodevars.bat"' Show="normal" WorkingDirectory="INSTALLDIR"/> + <Shortcut Id="InstallToolsShortcut" + Name="Install Additional Tools for Node.js" + Target="[%ComSpec]" + Arguments='/d /c "[INSTALLDIR]install_tools.bat"' + Show="normal" + WorkingDirectory="INSTALLDIR"/> <Shortcut Id="NodeExecutableShortcut" Name="Node.js" Target="[INSTALLDIR]node.exe" @@ -310,6 +326,9 @@ Execute="immediate" Return="check" /> + <Property Id="WixShellExecTarget" Value="[#InstallToolsBat]" /> + <CustomAction Id="LaunchApplication" BinaryKey="WixCA" DllEntry="WixShellExec" /> + <InstallUISequence> <Custom Action='SetInstallScope' Before='FindRelatedProducts'/> </InstallUISequence> @@ -340,6 +359,23 @@ <DialogRef Id="InstallDirDlg"/> <DialogRef Id="BrowseDlg"/> <DialogRef Id="InvalidDirDlg"/> + <Dialog Id="NativeToolsDlg" Width="370" Height="270" Title="!(loc.NativeToolsDlg_Title)"> + <Control Id="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="44" TabSkip="no" Text="!(loc.NativeToolsDlgBannerBitmap)" /> + <Control Id="Title" Type="Text" X="15" Y="6" Width="200" Height="15" Transparent="yes" NoPrefix="yes" Text="!(loc.NativeToolsDlgTitle)" /> + <Control Id="Description" Type="Text" X="25" Y="23" Width="280" Height="15" Transparent="yes" NoPrefix="yes" Text="!(loc.NativeToolsDlgDescription)" /> + <Control Id="BannerLine" Type="Line" X="0" Y="44" Width="370" Height="0" /> + + <Control Id="Intro" Type="Text" X="20" Y="65" Width="330" Height="30" NoPrefix="yes" Text="!(loc.NativeToolsDlgIntro)" /> + <Control Id="InstallCheckbox" Type="CheckBox" X="20" Y="105" Width="330" Height="30" Property="NATIVETOOLSCHECKBOX" CheckBoxValue="1" Text="!(loc.NativeToolsDlgInstallCheckbox)" /> + <Control Id="ManualDetails" Type="Hyperlink" X="20" Y="140" Width="330" Height="30" Text="!(loc.NativeToolsDlgManualDetails)" /> + + <Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0" /> + <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="!(loc.WixUINext)" /> + <Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="!(loc.WixUIBack)" /> + <Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="!(loc.WixUICancel)"> + <Publish Event="SpawnDialog" Value="CancelDlg">1</Publish> + </Control> + </Dialog> <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="LicenseAgreementDlg">NOT Installed</Publish> <Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">Installed AND PATCH</Publish> @@ -350,7 +386,6 @@ <Publish Dialog="InstallDirDlg" Control="Next" Event="SetTargetPath" Value="[WIXUI_INSTALLDIR]" Order="10">1</Publish> <Publish Dialog="InstallDirDlg" Control="ChangeFolder" Property="_BrowseProperty" Value="[WIXUI_INSTALLDIR]" Order="10">1</Publish> <Publish Dialog="InstallDirDlg" Control="ChangeFolder" Event="SpawnDialog" Value="BrowseDlg" Order="20">1</Publish> - <Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999">1</Publish> <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="CustomizeDlg" Order="1">NOT Installed OR WixUI_InstallMode = "Change"</Publish> <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="2">Installed AND NOT PATCH</Publish> <Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg" Order="3">Installed AND PATCH</Publish> @@ -361,7 +396,11 @@ <Publish Dialog="MaintenanceTypeDlg" Control="Back" Event="NewDialog" Value="MaintenanceWelcomeDlg">1</Publish> <Publish Dialog="CustomizeDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="1">Installed</Publish> <Publish Dialog="CustomizeDlg" Control="Back" Event="NewDialog" Value="InstallDirDlg" Order="2">NOT Installed</Publish> - <Publish Dialog="CustomizeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">1</Publish> + <Publish Dialog="CustomizeDlg" Control="Next" Event="NewDialog" Value="NativeToolsDlg">1</Publish> + <Publish Dialog="NativeToolsDlg" Control="Back" Event="NewDialog" Value="CustomizeDlg">1</Publish> + <Publish Dialog="NativeToolsDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">1</Publish> + <Publish Dialog="ExitDialog" Control="Finish" Event="DoAction" Value="LaunchApplication">NATIVETOOLSCHECKBOX = 1</Publish> + <Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999">1</Publish> <Property Id="WIXUI_EXITDIALOGOPTIONALTEXT" Value="!(loc.WIXUI_EXITDIALOGOPTIONALTEXT)"/> </UI> |