WizardKit/.bin/d7ii/Config/CustomApps_d7II/3rd Party Configs/a2cmd.cmd
2018-10-08 23:26:27 -06:00

167 lines
No EOL
8.8 KiB
Batchfile

::
:: --- BEGIN INFO ---
::
::
:: Applicable Custom App: All 'Emsisoft xxx' app configurations in d7II default custom app configurations.
::
:: Last Update: 2017-02-03
::
:: Created by Nick @ FoolishIT.com [Foolish IT LLC] as an example for the user-configurable d7II custom app's system.
::
::
:: - d7II Config Location: (applicable to most anything having to do with this batch file)
:: Open Config (under Main drop down menu) \ Custom Apps (tab) \ (search/find/highlight desired custom app in left column/box first) \ New/Edit App (sub-tab)
::
:: - This batch file is referenced from custom app configuration items in d7II Config, and may make references to other data available from within
:: the custom app configuration or used by it such as noted here.
::
:: - The 'Whitelist.txt' file created by this batch file will by referenced in the command line arguments passed to the custom app; the configuration
:: for this is located in custom apps config as mentioned above \ then the Execution (sub-tab)
::
:: - This batch file is called into action when configured in the 'Import Config Before Execution' setting in a d7II custom app configuration,
:: which can be found on the 'Pre-Execution' tab of the custom app configuration mentioned above.
::
:: NOTES: * When a .BAT/.CMD file such as this is found configured under this setting (as opposed to any other text or data file) it will be
:: copied to the custom app's final running directory (the same as any other files would be) but then executed as a batch script (after
:: the installer is executed if one is configured, but prior to execution of the main custom app itself.
::
:: * Similarly, a .VBS file would be copied to the custom app directory and executed as a script as above.
::
:: * Further, a .REG file would be imported to the registry if found configured for this setting.
::
:: * This setting may reference multiple files separated by a comma with no spacing required; e.g. 'file1.bat,file2.txt,file3.reg'
::
:: * All files (no paths) configured here must be located within your 'd7II\Config\CustomApps\3rd Party Configs' path (create the last
:: dirs if not exist.) They will likely work if located in the 'd7II\Config\CustomApps_d7II\3rd Party Configs' path, but with all
:: d7II default custom app configurations, this path with all content will be deleted and rewritten during updates to the default apps.
::
::
:: Batch File Objectives:
::
:: 1. Obtain d7II path via registry; use this in creating a whitelist to be used by the custom app
:: (to include all custom apps in subdirs of d7II)
::
:: 2. Obtain 3rd Party Tools path via registry; if this is not a subdir of the main d7II Path, then
:: add this to a whitelist to be used by the custom app (to include all custom apps in subdirs)
::
:: 3. create a2cmd whitelist as a new file in the location/directory of the custom app (overwrite existing if any)
:: - batch file current directory should be same as the main executable of the custom app (Execution tab)
:: - add d7II path and include all custom apps within the d7II subdir structure) and other Foolish IT apps
:: to a new file (overwrite) in the current directory (of the custom app whitelist for a2cmd.)
::
::
:: --- BEGIN CODE ---
:: Disable local echo, clear screen, output a blank line.
::
@echo off&cls&echo.
:: Set window title to visually identify what this console window is doing.
title [a2cmd] Performing Additional Custom App Tasks...
:: Change from the Current Working Directory (available to the %cd% variable)
:: to the Current Directory (available as %~dp0 below) where the file actually "lives"
:: and was the location where this batch file was copied to by d7II.exe prior to running it.
::
:: - This should be the path of the main exe for this custom app as configured in d7II;
:: located in custom apps config as mentioned above \ then the Execution (sub-tab)
::
:: - Syntax explanation:
::
:: '~' removes wrapping quotes (never use in a variable if possible, instead wrap the variable as necessary!)
:: 'd' returns a drive letter and colon
:: 'p' returns a full directory path (without a prepended driveletter, and including a trailing backslash)
:: '0' refers to self (this batch file) as the subject of the above conditions
::
pushd "%~dp0"
:: Set variables for registry value queries and app info
::
set "RegKey=HKLM\Software\Foolish IT\d7II\Session\Paths"
set "RegNameEXE=AppEXE"
set "RegName3PT=3PTDir"
set "MainPath=%systemdrive%\EmsisoftCmd"
set "MainEXE=a2cmd.exe"
set "InstEXE32=EmsisoftCommandlineScanner32.exe"
set "InstEXE64=EmsisoftCommandlineScanner64.exe"
set "InstParms=/S"
:: Determine if 64bit paths should be used. Note that by using the syntax '%programfiles% (x86)' and not the single
:: '%programfiles(x86)%' then we avoid any errors with the variable not existing and throwing off the actual exist check.
::
if "[%programfiles(x86)%]" NEQ "[]" if exist "%programfiles% (x86)" set Win64=True
::
if defined Win64 (
set "ProgramDir32=%programfiles(x86)%"
set "InstEXE=%InstEXE64%"
) else (
set "ProgramDir32=%programfiles%"
set "InstEXE=%InstEXE32%"
)
:: Run installer/self-extractor
::
if not exist "%MainPath%\%MainEXE%" if exist %InstEXE% start "" /wait "%InstEXE%" %InstParms%
:: Exit if install path does not exist...
::
if not exist "%MainPath%" (
goto :eof
) else (
pushd "%MainPath%"
)
:: Add exclusions for other Foolish IT product paths (unrelated to d7II) that may be on a system;
:: While we could first test for dir exist, the dumb addition of a few extra exclusions to the
:: whitelist without checking for their existence will make much of a difference to any custom app...
::
:: - NOTE: observe the first code line using a single ">" chr prior to the whitelist filename,
:: this creates new or overwrites an existing file; all subsequent usage for the same
:: filename must include the syntax of double ">>" chrs, which creates new or appends
:: to an existing file.
::
echo %ProgramDir32%\dSupportSuite\>a2cmd_Whitelist.txt
echo %ProgramDir32%\CryptoPrevent\>>a2cmd_Whitelist.txt
echo %ProgramDir32%\Foolish IT\CryptoPrevent\>>a2cmd_Whitelist.txt
:: Extract the full path to d7II.exe for the "d7IIPath" variable; obtain d7II path for the currently active
:: d7II 'session' via a registry query to the registry's copy of d7II's current session configuration.
::
:: - NOTE: The ' 2^>nul' syntax below redirects errors from the 'reg query' command to 'nul' in order to
:: keep garbage/error messages from defining this variable on an unexpected error...
::
:: Also, similar to the '%~dp0' syntax used with pushd at the beginning of the batch file, the
:: variable syntax '~dp' is used with the variable '%%_' to ensure output as a drive\path without
:: without a filename and without wrapping quotes (a trailing backslash is included in the output
:: and for these purposes it is also expected syntax for the custom app whitelist.
::
for /f "usebackq tokens=2*" %%a in (`reg query "%RegKey%" /v "%RegNameEXE%" 2^>nul`) do set "d7IIPath=%%~dpb"
::
:: Check for a result; if variable is defined above then add this path to the whitelist.
::
if defined d7IIPath echo %d7IIpath%>>a2cmd_Whitelist.txt
:: Next get the path to d7II custom apps / 3rd party tools via reg query, to provide redundancy if this path
:: for any reason is not located within a subdir of d7II.exe itself. First set the new registry value name.
::
for /f "usebackq tokens=2*" %%a in (`reg query "%RegKey%" /v "%RegName3PT%" 2^>nul`) do set "ToolsPath=%%~b"
::
:: Check for a result; if variable is defined above then add this path to the whitelist, otherwise the rest
:: of this script is useless, so exit.
::
if not defined ToolsPath goto :eof
echo %ToolsPath%\>>a2cmd_Whitelist.txt
:: If no parameters were passed to this batch file, it is being run as part of the "Copy Config" custom app
:: setting (it will be run a second time with parameters for the execution of the custom app itself, which is
:: configured to run this batch file again instead of %MainEXE% as the actual configured exe for this custom
:: app.)
::
:: Test to find out if any parameters were passed to this batch file, and if none are found just update...
::
if [%1] EQU [] goto :RunUpdate
:: If we make it this far then this batch file was launched with command line parameters intended for %MainEXE%,
:: so run the custom app passing all parameters as received and waiting for exit.
::
echo Running scan... (in a separate window; please do NOT close this window!)
::
start "" /wait "%MainEXE%" %*
goto :eof
:RunUpdate
::
:: Since getting here means no parameters were passed, run %MainEXE% using parameters for it's own internal
:: definition/signature update, then exit.
::
echo Starting update... (in a separate window; please do NOT close this window!)
::
start "" /wait "%MainEXE%" /update
goto :eof