diff options
-rw-r--r-- | Makefile | 24 | ||||
-rwxr-xr-x | branding/scripts/getparam | 2 | ||||
-rw-r--r-- | branding/templates/qtinstaller/packages/bitmaskvpn/meta/install.js | 24 | ||||
-rw-r--r-- | docs/build.windows.rst | 3 | ||||
-rw-r--r-- | docs/debug.rst | 16 |
5 files changed, 57 insertions, 12 deletions
@@ -109,21 +109,26 @@ lib/%.a: $(PKGFILES) relink_vendor: @echo "============RELINK VENDOR=============" - @echo "PLATFORM: ${PLATFORM}" + @echo "PLATFORM: ${PLATFORM} (${UNAME})" @echo "VENDOR_PATH: ${VENDOR_PATH}" @echo "PROVIDER: ${PROVIDER}" -ifeq ($(UNAME), CYGWIN_NT-10.0) - [ -L providers/assets ] || (CYGWIN=winsymlinks:nativestrict ln -s ${PROVIDER}/assets providers/assets) -endif -ifneq ($(UNAME), CYGWIN_NT-10.0) ifeq ($(PLATFORM), windows) - rm -rf providers/assets + @rm -rf providers/assets || true +ifeq ($(UNAME), MINGW64_NT-10.0) +ifeq ($(VENDOR_PATH), providers) + @cp -r providers/${PROVIDER}/assets providers/assets || true endif +endif # end mingw +ifeq ($(UNAME), CYGWIN_NT-10.0) + @[ -L providers/assets ] || (CYGWIN=winsymlinks:nativestrict ln -s ${PROVIDER}/assets providers/assets) +endif # end cygwin +else # not windows: linux/osx ifeq ($(VENDOR_PATH), providers) @unlink providers/assets || true @ln -s ${PROVIDER}/assets providers/assets || true endif endif + @echo "============RELINK VENDOR=============" build_golib: lib/libgoshim.a @@ -210,11 +215,14 @@ else @cp ${VENDOR_PATH}/assets/icon.ico ${INST_DATA}/icon.ico endif @cp ${QTBUILD}/release/${TARGET}.exe ${INST_DATA}${TARGET}.exe - # FIXME get the signed binaries with curl from openvpn downloads page - see if we have to adapt the openvpn-build to install tap drivers etc from our installer. + # FIXME get the signed binaries with curl from openvpn downloads page. @cp "/c/Program Files/OpenVPN/bin/openvpn.exe" ${INST_DATA} @cp "/c/Program Files/OpenVPN/bin/"*.dll ${INST_DATA} +ifeq (${RELEASE}, yes) + @windeployqt --release --qmldir gui/qml ${INST_DATA}${TARGET}.exe +else @windeployqt --qmldir gui/qml ${INST_DATA}${TARGET}.exe - #@windeployqt --release --qmldir gui/qml ${INST_DATA}${TARGET}.exe +endif # TODO stage it to shave some time @wget ${TAP_WINDOWS} -O ${INST_DATA}/tap-windows.exe endif diff --git a/branding/scripts/getparam b/branding/scripts/getparam index 235745d..005abb1 100755 --- a/branding/scripts/getparam +++ b/branding/scripts/getparam @@ -17,7 +17,7 @@ def getData(): configPath = os.path.join(vendorPath, 'vendor.conf') if not os.path.isfile(configPath): print("ERROR: path does not exist", configPath) - os.exit(1) + sys.exit(1) config = configparser.ConfigParser() config.read(configPath) defaultProvider = getDefaultProvider(config) diff --git a/branding/templates/qtinstaller/packages/bitmaskvpn/meta/install.js b/branding/templates/qtinstaller/packages/bitmaskvpn/meta/install.js index dada918..b82e032 100644 --- a/branding/templates/qtinstaller/packages/bitmaskvpn/meta/install.js +++ b/branding/templates/qtinstaller/packages/bitmaskvpn/meta/install.js @@ -61,6 +61,9 @@ Component.prototype.createOperations = function () if (systemInfo.productType === "osx") { preInstallOSX(); } + if (systemInfo.productType === "windows") { + preInstallWindows(); + } // This will actually install the files component.createOperations(); @@ -80,11 +83,28 @@ Component.prototype.createOperations = function () } } +function preInstallWindows() { + console.log("Pre-installation for Windows: check for running bitmask"); + component.addOperation( + "Execute", "{1}", "powershell", "-NonInteractive", "-NoProfile", "-command", "try {Get-Process $BINNAME} catch { exit 1}", + "errormessage=It seems that an old RiseupVPN client is running. Please exit the app and run this installer again.", + ); + /* Remove-Service only introduced in PS 6.0 */ + component.addElevatedOperation( + "Execute", "{0}", "powershell", "-NonInteractive", "-NoProfile", "-command", + "try {Get-Service bitmask-helper-v2} catch {exit 0}; try {Stop-Service bitmask-helper-v2} catch {}; try {$$srv = Get-Service bitmask-helper-v2; if ($$srv.Status -eq 'Running') {exit 1} else {exit 0};} catch {exit 0}", + "errormessage=It seems that bitmask-helper-v2 service is running, and we could not stop it. Please manually uninstall any previous RiseupVPN or CalyxVPN client and run this installer again.", + ); +} + function postInstallWindows() { // TODO - check if we're on Windows10 or older, and use the needed tap-windows installer accordingly. console.log("Installing OpenVPN tap driver"); - component.addElevatedOperation("Execute", "@TargetDir@/tap-windows.exe", "/S", "/SELECT_UTILITIES=1"); /* TODO uninstall? */ - console.log("Now trying to install our helper"); + component.addElevatedOperation("Execute", "@TargetDir@/tap-windows.exe", "/S", "/SELECT_UTILITIES=1"); /* TODO uninstall */ + /* remove an existing service, if it is stopped. Remove-Service is only in PS>6, and sc.exe delete leaves some garbage on the registry, so let's use the binary itself */ + console.log("Removing any previously installer helper..."); + component.addElevatedOperation("Execute", "{0,1}", "@TargetDir@/helper.exe", "remove"); + console.log("Now trying to install latest helper"); component.addElevatedOperation("Execute", "@TargetDir@/helper.exe", "install", "UNDOEXECUTE", "@TargetDir@/helper.exe", "remove"); component.addElevatedOperation("Execute", "@TargetDir@/helper.exe", "start", "UNDOEXECUTE", "@TargetDir@/helper.exe", "stop"); console.log("Adding shortcut entries/..."); diff --git a/docs/build.windows.rst b/docs/build.windows.rst index 93e9d41..a24f4b0 100644 --- a/docs/build.windows.rst +++ b/docs/build.windows.rst @@ -10,10 +10,11 @@ You should instal: make, wget, as well as a recent Qt5 version (for instance, wi For the installer, install QtIFW for windows (tested with version 3.2.2). -Assuming you have the vendor path in place and correctly configured, all you need to do is `make build_installer`:: +Assuming you have the vendor path in place and correctly configured, all you need to do is `make installer`:: export PATH="/c/Qt/Qt5/bin/":"/c/Qt/QtIFW-3.2.2/bin":$PATH export VENDOR_PATH=providers + export PROVIDER=riseup make vendor && make installer diff --git a/docs/debug.rst b/docs/debug.rst index 76c9d1f..a154ab0 100644 --- a/docs/debug.rst +++ b/docs/debug.rst @@ -57,3 +57,19 @@ Make sure that "pgrep bitmask-helper" does not return any pid. Now you can move /Applications/RiseupVPN.app to the Trash, and launch a recent installer to get a clean install. + +Windows +------- +In Windows you can use PowerShell to see if there's an old service Running (it +can be from RiseupVPN, CalyxVPN, LibraryVPN etc...). + +.. code:: powershell + + PS C:\Users\admin> Get-Service bitmask-helper-v2 + +You can also stop it (needs admin) + +.. code:: powershell + + PS C:\Users\admin> Stop-Service bitmask-helper-v2 + |