summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorJoão Reis <reis@janeasystems.com>2018-08-29 23:22:51 +0100
committerJoão Reis <reis@janeasystems.com>2018-09-12 03:17:48 +0100
commit39937938d705413ea438c9d4695953b5164557ef (patch)
tree163cad0be09dc4d3e98fb7b94f09dcbb386bc057 /tools
parent54e76fb873027cc6089bf8d7359d188d3687909e (diff)
downloadandroid-node-v8-39937938d705413ea438c9d4695953b5164557ef.tar.gz
android-node-v8-39937938d705413ea438c9d4695953b5164557ef.tar.bz2
android-node-v8-39937938d705413ea438c9d4695953b5164557ef.zip
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.bat25
-rw-r--r--tools/msvs/install_tools/install_tools.txt3
-rw-r--r--tools/msvs/msi/i18n/en-us.wxl8
-rwxr-xr-xtools/msvs/msi/product.wxs43
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>