passff-host/src/install_host_app.bat
2021-11-03 13:53:09 +00:00

113 lines
4.0 KiB
Batchfile

@ECHO OFF
SETLOCAL
SET "APP_NAME=passff"
SET "VERSION=_VERSIONHOLDER_"
SET "HOST_URL=https://github.com/passff/passff-host/releases/download/%VERSION%/passff.py"
SET "MANIFEST_URL=https://github.com/passff/passff-host/releases/download/%VERSION%/passff.json"
SET "TARGET_DIR=%APPDATA%\%APP_NAME%"
SET "HOST_MANIFEST=%APP_NAME%.json"
SET "HOST_SCRIPT=%APP_NAME%.py"
SET "HOST_BATCH=%APP_NAME%.bat"
SET "HOST_MANIFEST_FULL=%TARGET_DIR%\%HOST_MANIFEST%"
SET "HOST_SCRIPT_FULL=%TARGET_DIR%\%HOST_SCRIPT%"
SET "HOST_BATCH_FULL=%TARGET_DIR%\%HOST_BATCH%"
SET "USE_LOCAL_FILES="
SET "TARGET_REG="
REM check prerequisites: is python installed & in path?
python --version >NUL 2> NUL || (
ECHO "python not found in PATH. Please execute this command in a shell where python is in PATH"
EXIT /B
)
:loop
IF NOT "%1"=="" (
IF "%1"=="--local" (
SET "USE_LOCAL_FILES=true"
SHIFT
) ELSE IF "%1"=="--help" (
GOTO :help
) ELSE IF "%1"=="firefox" (
SET "TARGET_REG=HKCU\SOFTWARE\Mozilla\NativeMessagingHosts\%APP_NAME%"
SHIFT
) ELSE IF "%1"=="librewolf" (
SET "TARGET_REG=HKCU\SOFTWARE\LibreWolf\NativeMessagingHosts\%APP_NAME%"
SHIFT
) ELSE IF "%1"=="chrome" (
SET "TARGET_REG=HKCU\Software\Google\Chrome\NativeMessagingHosts\%APP_NAME%"
SHIFT
) ELSE IF "%1"=="chromium" (
ECHO Chromium registry key location for Native Messaging Hosts is undocumented. Assuming key for Chrome. Please provide feedback if this worked: https://github.com/passff/passff/issues/202
SET "TARGET_REG=HKCU\Software\Google\Chrome\NativeMessagingHosts\%APP_NAME%"
SHIFT
) ELSE IF "%1"=="opera" (
ECHO Opera registry key location for Native Messaging Hosts is undocumented. Assuming key for Chrome. Please provide feedback if this worked: https://github.com/passff/passff/issues/202
SET "TARGET_REG=HKCU\Software\Google\Chrome\NativeMessagingHosts\%APP_NAME%"
SHIFT
) ELSE IF "%1"=="vivaldi" (
ECHO Vivaldi registry key location for Native Messaging Hosts is undocumented. Assuming key for Chrome. Please provide feedback if this worked: https://github.com/passff/passff/issues/202
SET "TARGET_REG=HKCU\Software\Google\Chrome\NativeMessagingHosts\%APP_NAME%"
SHIFT
) ELSE (
SHIFT
)
GOTO :loop
)
IF "%TARGET_REG%"=="" (
GOTO :help
)
IF EXIST "%TARGET_DIR%" (
dir /AD "%TARGET_DIR%" > nul || (
ECHO "%TARGET_DIR%" is not a directory
EXIT /B
)
) ELSE (
MKDIR "%TARGET_DIR%" 2> nul
)
IF "%USE_LOCAL_FILES%"=="true" (
IF NOT EXIST "%~dp0%HOST_MANIFEST%" (
ECHO local file "%~dp0%HOST_MANIFEST%" not found
EXIT /B
)
IF NOT EXIST "%~dp0%HOST_SCRIPT%" (
ECHO local file "%~dp0%HOST_SCRIPT%" not found
EXIT /B
)
COPY /Y "%~dp0%HOST_MANIFEST%" "%HOST_MANIFEST_FULL%"
COPY /Y "%~dp0%HOST_SCRIPT%" "%HOST_SCRIPT_FULL%"
) ELSE (
powershell -Command "(New-Object Net.WebClient).DownloadFile('%HOST_URL%', '%HOST_SCRIPT_FULL%')"
powershell -Command "(New-Object Net.WebClient).DownloadFile('%MANIFEST_URL%', '%HOST_MANIFEST_FULL%')"
)
powershell -Command "(Get-Content '%HOST_MANIFEST_FULL%') -replace 'PLACEHOLDER', '%HOST_BATCH_FULL:\=/%' | Set-Content '%HOST_MANIFEST_FULL%'"
(
ECHO @ECHO OFF
ECHO SET "PATH=%PATH%"
ECHO SET "GNUPGHOME=%GNUPGHOME%"
ECHO python "%HOST_SCRIPT_FULL%" %%*
)>"%HOST_BATCH_FULL%"
REG ADD "%TARGET_REG%" /ve /d "%HOST_MANIFEST_FULL%" /f || (
ECHO Adding key to registry failed - maybe you need Administrator rights for this. Please run
ECHO REG ADD "%TARGET_REG%" /ve /d "%HOST_MANIFEST_FULL%" /f
ECHO manually in an administrative shell.
)
EXIT /B
:help
ECHO Usage: %0 [OPTION] [chrome^|chromium^|firefox^|opera^|vivaldi^|librewolf]
ECHO
ECHO Options:
ECHO --local Install files from disk instead of downloading them
ECHO --help Show this message"
EXIT /B