mirror of
https://codeberg.org/gaschz/passff-host.git
synced 2025-06-06 18:08:46 +02:00
113 lines
4.0 KiB
Batchfile
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
|