167 lines
No EOL
8.8 KiB
Batchfile
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 |