English | Español
This tool is designed to help with the tedious process of keeping the tools that we use to work daily up to date.
This is the inevitable complement to the toolkit of the site.
You can clone the repo with git or just download it from download.
git clone https://github.com/xchwarze/universal-tool-updater
To add tools you have to edit the file tools.ini
.
By default, it is configured as an example so that the user quickly understands how the tool is used.
[DIE]
folder = Analysis\DIE
url = horsicq/DIE-engine
from = github
re_download = die_win64_portable_(?:\S+).zip
[Portmon]
folder = Monitor\Portmon
url = https://raw.githubusercontent.com/MicrosoftDocs/sysinternals/main/sysinternals/downloads/portmon.md
update_url = https://download.sysinternals.com/files/PortMon.zip
from = web
re_version = # Portmon v(\d+\.\d+)
The values used for configuration are:
Name | Mandatory | Description |
---|---|---|
folder |
YES |
Folder where the tool will be saved. If it does not exist, it will be created. |
url |
YES |
Web that will be used to perform the checks with the regex. |
from |
NO |
Indicates the strategy used for the update. Currently supported values are: web , github or http . |
local_version |
NO |
Currently downloaded version. This value will be updated with each update. |
re_version |
NO |
Regex used to check for new versions on the web used in url . |
re_download |
NO |
Regex used to get the download link on the web used in url . |
update_url |
NO |
Update download URL. See "Strategy for download" for more info. |
update_file_pass |
NO |
Use this password to unzip the update. |
merge |
NO |
Merge new version with local. |
pre_update |
NO |
The entered script will be executed before the update process. |
post_update |
NO |
The entered script will be executed after the update process. |
post_unpack |
NO |
The entered script will be executed after unpack the update file. |
Combining the use of update_url
and re_download
the following download strategies are achieved:
- Using only
update_url
it downloads directly without any extra processing. - Using only
re_download
you get the download link on the web fromurl
. - When using both parameters, the result of
re_download
is concatenated withupdate_url
. This is useful for fixing GitHub or Sourceforge download links. - A new version detection method is also available that instead of regex uses the http headers with which the server responds.
The updater provides a flexible set of parameters to control its behavior:
Parameter | Description |
---|---|
-h, --help |
Show this help message and exit. |
-v, --version |
Display the program's version number and exit. |
-u [UPDATE ...], --update [UPDATE ...] |
Specify a list of tools to update. Defaults to updating all tools if not provided. |
-dsu, --disable-self-update |
Disable automatic self-update of this script. |
-dfc, --disable-folder-clean |
Skip cleaning the tool's folder during updates. |
-dr, --disable-repack |
Prevent repacking of tools after the update process. |
-dic, --disable-install-check |
Skip checking if the tools are properly installed. |
-dpb, --disable-progress-bar |
Disable the download progress bar for updates. |
-sft {full,version,name}, --save-format-type {full,version,name} |
Specify the save format type for compressed updates: full , version , or name . |
-f, --force |
Force the download of updates, even if they appear up to date. |
-uga USE_GITHUB_API, --use-github-api USE_GITHUB_API |
Use the GitHub API for updates, specifying the token to authenticate. |
-udp, --update-default-params |
Update the default parameters stored in the configuration. |
-dmc, --disable-mutex-check |
Allow multiple instances of the script to run simultaneously by disabling the mutex check. |
-d, --debug |
Enable detailed debug output for troubleshooting. |
The tool supports various commands and combinations. These are the most used.
- Update a particular tool
updater.exe --update "Process Hacker 3"
- Force Update of a tool
updater.exe --force --update DIE
- Update without compressing or cleaning the folder
updater.exe --disable-folder-clean --disable-repack
GitHub download are performed by default scraping data, but for a more robust operation it is recommended to do it using the GitHub api. To do this, follow these steps:
- Generate our token from https://github.com/settings/tokens by clicking on Generate new token.
- Run the updater with the following commands
updater.exe --update-default-params --use-github-api your_github_token
- Add updater tool to scheduled task. You can read more here "Create scheduled tasks with CLI", "How to create an automated task" and "Prevent command window appearing"
# execute in elevated command prompt
SCHTASKS /CREATE /SC DAILY /TN "ToolkitUpdater" /TR "D:\code\toolkit\Updater\custom-task.bat" /ST 14:00
- Delete scheduled task
# execute in elevated command prompt
SCHTASKS /DELETE /TN "ToolkitUpdater"
pip install pyinstaller
pyinstaller --onefile UpdateManager.py --icon=../assets/appicon.ico