This is a high-level summary of the most important changes. For a full list of changes, see the git commit log
- In development
- Although the concept is the same, most of the command options have been changed or have different purpose
- SvcBatch can now be used to install and manage services
- Use Windows registry instead command line options
- Improve the support for running alternate script interpreters
- Drop inconsistent -bb option
- Improve detecting invalid command option values
- Add -c command option for setting alternative script interpreters
- Add -e command option for setting the environment variable(s) for the current process
- Add -g command option for generating ctrl+break instead ctrl+c on service stop
- Enable service recovery if service terminates without stop signal
- Do not wait for shutdown process cleanup on timeout
- Kill all child processes if service terminates without stop signal
- Drop useless -c command option
- Enable log rotation by signal, only if -rS option was defined at install time
- Enable -v option even if logging is disabled
- If not an absolute path, create log directory relative to the work directory
- Fix creating log directories with more then two missing intermediate paths
- Add /E:ON and /V:OFF switches when starting cmd.exe to disable system registry settings influencing services
- Drop complex and unstable external log application support.
- Drop experimental console mode with _DEBUG builds
- Use object structures instead global variables
- Do not rotate logs if previous rotation was less then 2 minutes ago
- Use asynchronous read from redirected console process
- Ensure that all started processes are properly terminated
- Deprecate setting locale with -c command option
- Check for mutually exclusive options at startup
- Drop support for multiple -n options. The -n parameter will be used both for service and shutdown log names
- Disable -m0 command option. Users should use -t option instead
- Always overwrite existing log files
- Log status messages to separate SvcBatch.status.log file
- Add SVCBATCH_SERVICE_LOGS environment variable
- Add SVCBATCH_SERVICE_WORK environment variable
- Add SVCBATCH_APP_BIN, SVCBATCH_APP_DIR and SVCBATCH_APP_VER environment variables
- Add -h command option that enables to have separate home and work directories
- Add -k command option for changing default stop timeout
- Use -c command option to set user defined code page
- Add arguments from the service start application to the existing batch file arguments
- Drop external log application support for shutdown batch file
- Do not rotate shutdown log files
- Drop -d command option in favor of _DEBUG builds
- Drop -a command option in favor of multiple -s options
- Add -c command option for changing default run-time locale
- Add -q command option to disable logging
- Add -t command option that will truncate log file
- Use -m command option to replace previous -r0...9
- Add -v command option that enables to log various internal messages
- Add support for log rotation at each full hour
- Add strftime support for log file names
- Enable to run services in console mode with _DEBUG builds
- Terminate external log application if it fails to exit within 5 seconds after closing log files
- Use service batch file as shutdown batch file if -a was defined and -s was not
- Drop experimental support for user rotate service control for external log applications
- Drop SVCBATCH_SERVICE_MODE environment variable
- Drop SVCBATCH_SERVICE_LOGDIR environment variable
- Stop service if write to logfile fails
- Remove automatic log flush
- Use high-resolution timer for internal logging
- Fix issues with reporting errors to Windows Event Log
- Fix quoting arguments for batch files
- Add -a command option that enables to provide arguments to shutdown batch file
- Not released
- Report to system Event Log if external log application fails at run time
- Enable external log applications to handle user rotate service control
- Add -l command option to use local instead system time for log rotation and messages
- Do not start rotate thread if log rotation is disabled
- Kill service if log file is closed at runtime
- Add -e command option that enables to start external log application
- Add -n command option that enables to change default log file name prefix
- Add SVCBATCH_SERVICE_MODE environment variable
- Fix SvcBatch.log flushing
- Correctly report exit codes from child processes
- Send additional arguments to batch file if defined at install time
- Add full support for building with msys2 or cygwin environment
- Add -q command option for disabling internal status logging
- Disable log rotation if
-r 0
is defined at install time - Create rotated log names using current system time instead last write time
- Fix service stop when shutdown script is unresponsive
- Create svcbatch.h from svcbatch.h.in at build time
- Create svcbatch.manifest from svcbatch.manifest.in at build time
- Add more advanced command line option parser
- Fix dead services waiting on
Terminate batch job (Y/N)?
- Add -d command option for debug tracing
- Fix propagating CTRL_C_EVENT from shutdown process
- Use the same rotation rules for shutdown log
- Add rule option to define SVC_MAX_LOGS at runtime
- Add option to disable log rotation
- Drop experimental RunBatch feature
- Allow relative paths for SVCBATCH_SERVICE_HOME
- Make sure that SVCBATCH_SERVICE_BASE is set to service batch file directory.
- In case both batch file and working directory are relative paths use svcbatch.exe as home.
- Not released
- Use -s option for SvcBatchEnd batch file
- Remove -c (clean path) support
- Ensure that SvcBatchRun and SvcBatchEnd processes are closed in timely manner
- Use Job Objects for SvcBatchRun and SvcBatchEnd
- Add RunBatch feature
- Add feature to run batch file on service stop.
- Add Service preshutdown option
- Increase SVC_MAX_LOGS to 9
- Drop interactive mode
- Remove _RUN_API_TEST
- Remove _DBGVIEW_SAVE
- Remove experimental support for service pause/continue
- Fix log rotation timeout processing
- Improve _DGVIEW_SAVE thread safety
- Report error to Service Manager if createiopipes fails
- Log SvcBatch features defined at install time
- Add interactive mode
- Added support for service pause/continue
- Improve release creation procedure
- Drop NULL DACL and use default security descriptor associated with the access token of the calling process
- Add support for log file auto rotation
- Rotate logs if service is running more then 30 days and auto rotation is not defined at create time
- Add support for SvcBatch.dbg if
_DBGSAVE=1
is defined at build time - Add support for vendor version suffix
- Update examples and documentation
- Fix issues with corrupt log files due to thread synchronization
- No need to report SERVICE_CONTROL_INTERROGATE
- Use Job to close child processes instead tlhelp32 API
- New release
- Drop make install
- Use static msvcrt for release builds
- First release
- Cleanup code
- Cleanup code
- Add PowerShell examples
- Drop entire ABI concept
- Add SVCBATCH_SERVICE_LOGDIR variable
- Drop console shutdown signals
- Restore original SvcBach.log if rotation fails
- Increased the number of log files to 4
- Switched ABI to 20201209
- Dropped support for exitonerror
- Cleaned-up code and removed unused and duplicate stuff
- Updated documentation and added more examples
- Dropped support for parent shutdown signal
- Cleaned-up code inconsistency
- Added support to send shutdown signal from batch files to parent
- Sending CTRL_BREAK must now be explicitly enabled with /b switch
- Kill entire child process tree even if child already terminated
- Initial release