From 325790703f49c26e4ad174d393f66b63415fbc0b Mon Sep 17 00:00:00 2001 From: Bryan White Date: Fri, 3 Jan 2020 14:28:04 +0100 Subject: [PATCH] installer/windows: batch file improvements (#3441) --- Jenkinsfile | 2 +- installer/windows/.gitignore | 1 + installer/windows/build.bat | 22 +++++++++++++++----- installer/windows/buildrelease.bat | 6 ++++++ installer/windows/install.bat | 30 ++++++++++++++++++++++++++++ installer/windows/installrelease.bat | 7 +++++++ installer/windows/uninstall.bat | 14 +++++++++++++ 7 files changed, 76 insertions(+), 6 deletions(-) create mode 100644 installer/windows/buildrelease.bat create mode 100644 installer/windows/install.bat create mode 100644 installer/windows/installrelease.bat create mode 100644 installer/windows/uninstall.bat diff --git a/Jenkinsfile b/Jenkinsfile index 1d4738c8f..383bb25d7 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -85,7 +85,7 @@ node('node') { unstash "storagenode-binaries" - bat 'installer\\windows\\build.bat' + bat 'installer\\windows\\buildrelease.bat' stash name: "storagenode-installer", includes: "release/**/storagenode*.msi" diff --git a/installer/windows/.gitignore b/installer/windows/.gitignore index 563afe951..a28d7441d 100644 --- a/installer/windows/.gitignore +++ b/installer/windows/.gitignore @@ -4,6 +4,7 @@ /obj/ */obj/ /packages/ + *.exe *.msi *.wixobj diff --git a/installer/windows/build.bat b/installer/windows/build.bat index 840f4ae4c..93e5005a0 100644 --- a/installer/windows/build.bat +++ b/installer/windows/build.bat @@ -1,9 +1,17 @@ -rem set the TAG env var from the release dir -for /f %%i in ('dir /B release') do set TAG=%%i +@echo off + +rem count # of args +set argC=0 +for %%x in (%*) do Set /A argC+=1 + +if not "%argC%"=="3" ( + echo usage: %~nx0 ^ ^ ^ + exit /B 1 +) rem copy the storagenode binaries to the installer project -copy release\%TAG%\storagenode_windows_amd64.exe installer\windows\storagenode.exe -copy release\%TAG%\storagenode-updater_windows_amd64.exe installer\windows\storagenode-updater.exe +copy %1 installer\windows\storagenode.exe +copy %2 installer\windows\storagenode-updater.exe rem install NuGet packages nuget install installer\windows\StorjTests\packages.config -o installer\windows\packages @@ -11,5 +19,9 @@ nuget install installer\windows\StorjTests\packages.config -o installer\windows\ rem build the installer msbuild installer\windows\windows.sln /t:Build /p:Configuration=Release +rem cleanup copied binaries +del installer\windows\storagenode.exe +del installer\windows\storagenode-updater.exe + rem copy the MSI to the release dir -copy installer\windows\bin\Release\storagenode.msi release\%TAG%\storagenode_windows_amd64.msi +copy installer\windows\bin\Release\storagenode.msi %3 diff --git a/installer/windows/buildrelease.bat b/installer/windows/buildrelease.bat new file mode 100644 index 000000000..15a865223 --- /dev/null +++ b/installer/windows/buildrelease.bat @@ -0,0 +1,6 @@ +@echo off + +rem build msi installer for each release directory +for /d %%d in (release\*) do ( + call %~dp0build.bat %%d\storagenode_windows_amd64.exe %%d\storagenode-updater_windows_amd64.exe %%d\storagenode_windows_amd64.msi +) diff --git a/installer/windows/install.bat b/installer/windows/install.bat new file mode 100644 index 000000000..8260b0b53 --- /dev/null +++ b/installer/windows/install.bat @@ -0,0 +1,30 @@ +@echo off +setlocal enabledelayedexpansion + +rem NB: This script requires administrative privileges. +rem It can't prompt for escalation if the `/q` option is used. + +rem count # of args +set argC=0 +for %%x in (%*) do Set /A argC+=1 + +if not %argC% gtr 0 ( + echo usage: %~nx0 ^[\q^] "" ^[PROPERTY="value" ...^] + exit /B 1 +) + +set interactivity=/passive /qb +if not %1==/q set msipath=%1 +if %1==/q set msipath=%2 +set props=STORJ_WALLET="0x0000000000000000000000000000000000000000" STORJ_EMAIL="user@mail.example" STORJ_PUBLIC_ADDRESS="127.0.0.1:10000" +for %%x in (%*) do ( + if not %%x==%msipath% if not %%x==/q set props=!props! %%x + if %%x==/q set interactivity=/quiet /qn +) + +rem uninstall existing storagenode product +echo uninstalling storagenode +call %~dp0uninstall.bat %msipath% + +echo installing storagenode from %msipath% +msiexec /i %msipath% %interactivity% /norestart /log %~dp1install.log %props% diff --git a/installer/windows/installrelease.bat b/installer/windows/installrelease.bat new file mode 100644 index 000000000..6d63ecadb --- /dev/null +++ b/installer/windows/installrelease.bat @@ -0,0 +1,7 @@ +@echo off + +rem NB: only installs from *first* release directory +for /d %%d in (release\*) do ( + call %~dp0install.bat %%d\storagenode_windows_amd64.msi + goto :EOF +) diff --git a/installer/windows/uninstall.bat b/installer/windows/uninstall.bat new file mode 100644 index 000000000..64e895d02 --- /dev/null +++ b/installer/windows/uninstall.bat @@ -0,0 +1,14 @@ +@echo off +setlocal + +rem count # of args +set argC=0 +for %%x in (%*) do Set /A argC+=1 + +if not %argC%==1 ( + echo usage: %~nx0 "" + exit /B 1 +) + +set msipath=%1 +msiexec /uninstall %msipath%