Polish Windows installer (#62)
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,4 +1,3 @@
|
||||
/browserpass
|
||||
/browserpass-*
|
||||
dist/
|
||||
setup.msi
|
||||
|
40
Makefile
40
Makefile
@@ -1,23 +1,24 @@
|
||||
BIN ?= browserpass
|
||||
VERSION ?= $(shell cat .version)
|
||||
BIN = browserpass
|
||||
VERSION = $(shell cat .version)
|
||||
|
||||
PREFIX ?= /usr
|
||||
BIN_DIR = $(DESTDIR)$(PREFIX)/bin
|
||||
LIB_DIR = $(DESTDIR)$(PREFIX)/lib
|
||||
SHARE_DIR = $(DESTDIR)$(PREFIX)/share
|
||||
|
||||
WINDOWS_BIN = C:\\\\\\\\Program Files\\\\\\\\Browserpass\\\\\\\\browserpass-windows64.exe
|
||||
BIN_PATH = $(BIN_DIR)/$(BIN)
|
||||
BIN_PATH_WINDOWS = C:\\\\\\\\\\\\\\\\Program Files\\\\\\\\\\\\\\\\Browserpass\\\\\\\\\\\\\\\\browserpass-windows64.exe
|
||||
|
||||
GO_GCFLAGS := "all=-trimpath=${PWD}"
|
||||
GO_ASMFLAGS := "all=-trimpath=${PWD}"
|
||||
GO_LDFLAGS := "-extldflags ${LDFLAGS}"
|
||||
|
||||
APP_ID := com.github.browserpass.native
|
||||
OS := $(shell uname -s)
|
||||
APP_ID = com.github.browserpass.native
|
||||
OS = $(shell uname -s)
|
||||
|
||||
# GNU tools
|
||||
SED := $(shell which gsed 2>/dev/null || which sed 2>/dev/null)
|
||||
INSTALL := $(shell which ginstall 2>/dev/null || which install 2>/dev/null)
|
||||
SED = $(shell which gsed 2>/dev/null || which sed 2>/dev/null)
|
||||
INSTALL = $(shell which ginstall 2>/dev/null || which install 2>/dev/null)
|
||||
|
||||
#######################
|
||||
# For local development
|
||||
@@ -63,16 +64,20 @@ dist: clean browserpass-linux64 browserpass-darwin64 browserpass-openbsd64 brows
|
||||
|
||||
$(eval TMP := $(shell mktemp -d))
|
||||
|
||||
for os in linux64 darwin64 openbsd64 freebsd64 windows64; do \
|
||||
# Unix installers
|
||||
for os in linux64 darwin64 openbsd64 freebsd64; do \
|
||||
mkdir $(TMP)/browserpass-"$$os"-$(VERSION); \
|
||||
cp -a browserpass-"$$os"* browser-files Makefile README.md LICENSE $(TMP)/browserpass-"$$os"-$(VERSION); \
|
||||
if [ "$$os" = "windows64" ]; then \
|
||||
(cd $(TMP) && zip -r ${CURDIR}/dist/browserpass-"$$os"-$(VERSION).zip browserpass-"$$os"-$(VERSION)); \
|
||||
else \
|
||||
(cd $(TMP) && tar -cvzf ${CURDIR}/dist/browserpass-"$$os"-$(VERSION).tar.gz browserpass-"$$os"-$(VERSION)); \
|
||||
fi \
|
||||
done
|
||||
|
||||
# Windows installer
|
||||
mkdir $(TMP)/browserpass-windows64-$(VERSION)
|
||||
cp -a browserpass-windows64.exe browser-files Makefile README.md LICENSE windows-setup.wxs $(TMP)/browserpass-windows64-$(VERSION)
|
||||
(cd $(TMP)/browserpass-windows64-$(VERSION); \
|
||||
make BIN_PATH="$(BIN_PATH_WINDOWS)" configure; \
|
||||
wixl --verbose --arch x64 windows-setup.wxs --output ${CURDIR}/dist/browserpass-windows64-$(VERSION).msi)
|
||||
|
||||
rm -rf $(TMP)
|
||||
|
||||
for file in dist/*; do \
|
||||
@@ -86,12 +91,8 @@ dist: clean browserpass-linux64 browserpass-darwin64 browserpass-openbsd64 brows
|
||||
|
||||
.PHONY: configure
|
||||
configure:
|
||||
$(SED) -i 's|"path": ".*"|"path": "'"$(BIN_DIR)/$(BIN)"'"|' browser-files/chromium-host.json
|
||||
$(SED) -i 's|"path": ".*"|"path": "'"$(BIN_DIR)/$(BIN)"'"|' browser-files/firefox-host.json
|
||||
|
||||
configure-windows:
|
||||
$(SED) -i 's|"path": ".*"|"path": "'"$(WINDOWS_BIN)"'"|' browser-files/chromium-host.json
|
||||
$(SED) -i 's|"path": ".*"|"path": "'"$(WINDOWS_BIN)"'"|' browser-files/firefox-host.json
|
||||
$(SED) -i 's|"path": ".*"|"path": "'"$(BIN_PATH)"'"|' browser-files/chromium-host.json
|
||||
$(SED) -i 's|"path": ".*"|"path": "'"$(BIN_PATH)"'"|' browser-files/firefox-host.json
|
||||
|
||||
.PHONY: install
|
||||
install:
|
||||
@@ -359,6 +360,3 @@ policies-brave-user:
|
||||
;; \
|
||||
*) echo "The operating system $(OS) is not supported"; exit 1 ;; \
|
||||
esac
|
||||
|
||||
setup.msi:
|
||||
wixl --arch x64 setup.wxs
|
44
README.md
44
README.md
@@ -10,10 +10,8 @@ This is a host application for [browserpass](https://github.com/browserpass/brow
|
||||
- [Install via package manager](#install-via-package-manager)
|
||||
- [Install manually](#install-manually)
|
||||
- [Install on Nix / NixOS](#install-on-nix--nixos)
|
||||
- [Install on Windows](#install-on-windows)
|
||||
- [Install on Windows through WSL](#install-on-windows-through-wsl)
|
||||
- [Configure browsers](#configure-browsers)
|
||||
- [Configure browsers on Windows](#configure-browsers-on-windows)
|
||||
- [Building the app](#building-the-app)
|
||||
- [Build locally](#build-locally)
|
||||
- [Build using Docker](#build-using-docker)
|
||||
@@ -62,6 +60,8 @@ Primary key fingerprint: EB4F 9E5A 60D3 2232 BB52 150C 12C8 7A28 FEAC 6B20
|
||||
Subkey fingerprint: 8053 EB88 879A 68CB 4873 D32B 011F DC52 DA83 9335
|
||||
```
|
||||
|
||||
If you are on Windows, just run the installer, it will install all the necessary files in `C:\Program Files\Browserpass` and it will also [configure browsers](#configure-browsers). You are done!
|
||||
|
||||
Unpack the archive. If you decided to compile the application yourself, refer to the [Building the app](#building-the-app) section on how to do so. Once complete, continue with the steps below.
|
||||
|
||||
If you are on macOS, first install the necessary tools: `brew install coreutils gnu-sed`.
|
||||
@@ -117,18 +117,6 @@ $ nix-env -iA nixpkgs.browserpass # Or nix-env -iA nixos.browserpass on NixOS
|
||||
$ DESTDIR=~/.nix-profile make -f ~/.nix-profile/lib/browserpass/Makefile <desired make goal>
|
||||
```
|
||||
|
||||
#### Install on Windows
|
||||
|
||||
The Makefile currently does not support Windows, so instead of `sudo make install` you'd have to do a bit of a manual work.
|
||||
|
||||
First, copy the contents of the extracted `browserpass-windows64` folder to a permanent location where you want Browserpass to be installed, for the sake of example let's suppose it is `C:\Program Files\Browserpass\`.
|
||||
|
||||
Then edit the hosts json files (in our example `C:\Program Files\Browserpass\browser-files\*-host.json`) and replace `%%replace%%` with a full path to `browserpass-windows64.exe` (in our example `C:\\Program Files\\Browserpass\\browserpass-windows64.exe`, **remember to use double backslashes!**).
|
||||
|
||||
If you don't have permissions to save the json files, try opening notepad as Administrator first, then open the files.
|
||||
|
||||
Finally proceed to the [Configure browsers on Windows](#configure-browsers-on-windows) section.
|
||||
|
||||
#### Install on Windows through WSL
|
||||
|
||||
If you want to use WSL instead, follow Linux installation steps, then create `%localappdata%\Browserpass\browserpass-wsl.bat` with the following contents:
|
||||
@@ -189,34 +177,6 @@ In addition, Chromium-based browsers support the following `make` goals:
|
||||
| `sudo make policies-brave` | Automatically install browser extension from Web Store for Brave browser, system-wide |
|
||||
| `sudo make policies-vivaldi` | Automatically install browser extension from Web Store for Vivaldi browser, system-wide |
|
||||
|
||||
#### Configure browsers on Windows
|
||||
|
||||
The Makefile currently does not support Windows, so instead of the make goals shown above you'd have to do a bit of a manual work.
|
||||
|
||||
Open `regedit` and create a browser-specific subkey, it can be under `HKEY_CURRENT_USER` (`hkcu`) or `HKEY_LOCAL_MACHINE` (`hklm`) depending if you want to configure Browserpass only for your user or for all users respectively:
|
||||
|
||||
1. Google Chrome: `hkcu:\Software\Google\Chrome\NativeMessagingHosts\com.github.browserpass.native`
|
||||
1. Firefox: `hkcu:\Software\Mozilla\NativeMessagingHosts\com.github.browserpass.native`
|
||||
|
||||
Inside this subkey create a new property called `(Default)` with the value of the full path to the browser-specific hosts json file, for example:
|
||||
|
||||
1. Google Chrome: `C:\Program Files\Browserpass\browser-files\chromium-host.json`
|
||||
1. Firefox: `C:\Program Files\Browserpass\browser-files\firefox-host.json`
|
||||
|
||||
You can automate all of these steps by running the following commands in PowerShell:
|
||||
|
||||
```powershell
|
||||
# Google Chrome
|
||||
New-Item -Path "hkcu:\Software\Google\Chrome\NativeMessagingHosts\com.github.browserpass.native" -force
|
||||
New-ItemProperty -Path "hkcu:\Software\Google\Chrome\NativeMessagingHosts\com.github.browserpass.native" -Name "(Default)" -Value "C:\Program Files\Browserpass\browser-files\chromium-host.json"
|
||||
|
||||
# Firefox
|
||||
New-Item -Path "hkcu:\Software\Mozilla\NativeMessagingHosts\com.github.browserpass.native" -force
|
||||
New-ItemProperty -Path "hkcu:\Software\Mozilla\NativeMessagingHosts\com.github.browserpass.native" -Name "(Default)" -Value "C:\Program Files\Browserpass\browser-files\firefox-host.json"
|
||||
```
|
||||
|
||||
For other browsers, please explore the registry to find the correct location, and peek into Makefile for inspiration.
|
||||
|
||||
## Building the app
|
||||
|
||||
### Build locally
|
||||
|
@@ -13,6 +13,8 @@
|
||||
<File Id='ChromiumHostJSON' Name='chromium-host.json' Source='browser-files/chromium-host.json' />
|
||||
<File Id='ChromiumPolicyJSON' Name='chromium-policy.json' Source='browser-files/chromium-policy.json' />
|
||||
<File Id='FirefoxHostJSON' Name='firefox-host.json' Source='browser-files/firefox-host.json' />
|
||||
<File Id='ReadmeMD' Name='README.md' Source='README.md' />
|
||||
<File Id='LICENSE' Name='LICENSE' Source='LICENSE' />
|
||||
<RegistryKey Id='ChromeNativeMessaging' Root='HKLM' Key='Software\Google\Chrome\NativeMessagingHosts\com.github.browserpass.native' >
|
||||
<RegistryValue Type='string' Name='' Value='C:\Program Files\Browserpass\chromium-host.json'/>
|
||||
</RegistryKey>
|
Reference in New Issue
Block a user