Awesome
English | Español
Universal Tool Updater
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.
Installation
You can clone the repo with git or just download it from download.
git clone https://github.com/xchwarze/universal-tool-updater
Setting
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://docs.microsoft.com/en-us/sysinternals/downloads/portmon
update_url = https://download.sysinternals.com/files/PortMon.zip
re_version = <h1 [^>]*>Portmon for Windows v(.*?)</h1>
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. |
Strategy for download
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.
Examples
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
Use with GitHub Api
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
Use with scheduled tasks
- 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"
Compile to exe
pip install pyinstaller
pyinstaller --onefile UpdateManager.py --icon=../assets/appicon.ico