What’s up with BZ this week?

Over the past weekend, the overall structure of a cmdlet was cleaned up, but in turn, it opened up a lot of new bugs in the logic that I had not forseen. I could just drop all this cleanup, and drop support for proxy servers, but that’s not ideal. I’d like to make sure all people can access the toolkit.

As of today, I’m going to re-write the template I base each cmdlet off of, then re-implement each tool in the new template structure.

Features I plan to include are:

  • Proxy Server Support
  • Backup Download Links
  • Locally hosted files on BootZilla.org (for some apps that would otherwise eat the individual authors’ bandwidth)
  • Clear instructions on how to use the template file

If I have enough time, I’m also going to build a script that will auto-generate a cmdlet, which will simplify the creation of these scripts, and reduce the amount of re-work I have to perform between releases and test versions of the toolkit.

What this means to the end user: Easier to manage and create your own scripted downloads, as well as a more proper download function that has logic to reduce bandwidth use in the long run.

Boot CD/USB functionality will also be added in to this new revision of the scripts. Currently, a very small bit of code for this exists in the ‘alpha4’ BZBuilder, which needs to be expanded on in order to be made useful. The only functions currently in are the search for, and execution for any cmdlet in the boot directory. The next bits include integration of iso-regeneration and usb-bootable image creation. These last bits will likely make an appearance later on in either an alpha5 or beta 1 release.

One last thingSyMenu will be the official launcher app for BootZilla. Once the scripting is completed, work will begin on integration of SyMenu into the toolkit. It’s a very useful tool that will make using BootZilla very intuitive for both Techs and end-users alike.

Crushing bugs and taking names…

Today, I’m happy to release Alpha 3 of the new BootZilla toolkit. As far as I know, there are no known bugs in this release. The issues with ccleaner not properly extracting have been fixed. Several new utilities and applications have been added to the toolkit. It is nearly feature-complete at this point.

The last remaining bits that need some more fleshing out include: boot cd functionality, iso creation/usb img creator-writer, some sort of launcher app, … I’m sure I’m missing something from this list.

Download – http://www.bootzilla.org/wp-content/plugins/download-monitor/download.php?id=19

Addon-pack functionality will be tested in the next version. This may be the last alpha, I don’t know for sure whether or not that’s the case at this point in time, though. I’d like to get this out to as many testers as possible, so the eventual beta releases will be done and out of the way sooner, rather than later.

Alpha 2 is released!

I spent some more time debugging the new cmdlet template, and came up with a somewhat-functional alpha for tonight.


CCleaner currently does not extract, which is a bug that I will continue debugging tomorrow. For now, a handful of tools will download and get placed in their appropriate folders. Take a look at the template.cmd in the “testbuild” directory to see how to build a cmdlet. Submit your own to a service like pastebin, and I’ll review it, and possibly add it in.

I am planning on offering ‘AddonPacks’, which will be processed separately from the main loop, for advanced sysadmins that are ok with false-positives. So far, I’m planning a nirsoft pack, as well as a handful of other useful packs that can add functionality to the toolkit. Currently, there is no code nor menu in place to handle this, but it is a planned feature.

CMDLets Unleashed

Today, I went ahead and redesigned the cmdlet template, to both make my life easier in creating cmdlets, and to make the system a bit more fleshed out.

Let’s take a look at a working template, as an example (file links will be mirrored to bootzilla.org in the final version of the script)-

@echo off
setlocal enableextensions enabledelayedexpansion


:: app= name of local file, url= url of file, ref= [0/1] on/off referer support
:: decomp= decompression needed, xxcopy= xcopy resulting file/directory
:: destination= second-level directory to put files, destdir= [0/1] on/off second-level directory
:: referer= set this to a referer if needed

set app=uvs_v383eng.zip
set url=http://dsrt.dyndns.org/files/uvs_v383eng.zip
set dest=mal
set ref=0

:: These are flags 1 = yes, 2 = no. Both can be set to 1 if a file needs to be decompressed and moved
set decomp=1
:: set xxcopy=

:: If a program needs to go into its own directory, we set it here
set destination=1
set destdir=uVS

:: Supplementary Files
:: These are intended for apps that need additional files to operate
:: Specifically for ccleaner’s winapp2.ini, uVS’s database file, and a handful of other tools
set supp=1
set suppapp=MAIN.zip
set suppurl=http://dsrt.dyndns.org/files/MAIN.zip
:: set suppref=
set suppdest=1
:: set suppreferer=
set suppdecomp=1
:: set suppxxcopy=
set suppdestdir=SHA

echo. %TIME% – Processing %app% >> ..log.log

:: Wget
if not exist %app% if %ref%==1 ..wget –referer=%referer% %url% -O%app%
if exist %app% if %ref%==1 ..wget –referer=%referer% %url% -O%app%
if not exist %app% if %ref%==0 ..wget %url% -O%app%
if exist %app% if %ref%==0 ..wget %url% -O%app%

if %errorlevel% EQU 1 echo %TIME% – %app% failed to download >> ..error.log

:: specify 7z -y e if you don’t want the directory tree from the archive
if %decomp% EQU 1 if %destination%==1 7z -y x %app% -o….%dest%%destdir%
if %decomp% EQU 1 if %destination%==0 7z -y x %app% -o….%dest%

:: If just copying a file use xcopy
if %xxcopy% EQU 1 if %destination% EQU 1 xcopy /Y /IS /R /S %app% ….%dest%%destdir%
if %xxcopy% EQU 1 if %destination% EQU 0 xcopy /Y /IS /R /S %app% ….%dest%
if %supp%==0 goto _log
if %supp%==1 goto _supplements

:: Supplementary file process
echo %TIME% – Processing supplemental files for %app% >> ..log.log
if not exist %suppapp% if %suppref%==1 ..wget –referer=%suppreferer% %suppurl% -O%suppapp%
if exist %suppapp% if %ref%==1 ..wget –referer=%suppreferer% %suppurl% -O%suppapp%
if not exist %suppapp% if %suppref%==0 ..wget %suppurl% -O%suppapp%
if exist %suppapp% if %suppref%==0 ..wget %suppurl% -O%suppapp%

if %errorlevel% EQU 1 echo %TIME% – %suppapp% failed to download >> ..error.log

:: specify 7z -y e if you don’t want the directory tree from the archive
:: if suppdest is not defined, then we process it as if it were the original app.
if %suppdecomp% EQU 1 if %suppdest%==nul 7z -y x %suppapp% -o….%dest%%destdir%
:: Otherwise we process it as its own app
if %suppdecomp% EQU 1 if %suppdest%==1 7z -y x %suppapp% -o….%suppdest%%suppdestdir%
:: if %suppdecomp% EQU 1 if %suppdest%==0 7z -y x %suppapp% -o….%dest%

:: If just copying a file use xcopy
if %xxcopy% EQU 1 if %suppdest% EQU 1 xcopy /Y /IS /R /S %suppapp% ….%dest%%destdir%
if %xxcopy% EQU 1 if %suppdest% EQU 0 xcopy /Y /IS /R /S %suppapp% ….%dest%

if %errorlevel% EQU 1 echo %TIME% – Failed to fully process %app% >> ..log.log

Lots and lots of new features are included in the template, including:

  • variables!
  • referers support
  • supplementary file support
  • functions!
  • logical if->then statements!

Overall, this is about 5-7 hours more work to try and save as much sanity as I can while developing this next version. The really rewarding part is that once I get this template finalized and fully bugfixed, I can re-write all my previous cmdlets with it, which will ensure consistency between each and every cmdlet – thus reducing wacky bugs that could crop up during the build process.

I feel this system is necessary for the build process to work properly. The added advantage is that the BZBuilder script hasn’t been touched in days, as all this is very modular – no need to fix what isn’t broken, so long as the simple loops work properly in the main builder script.

Next steps include: testing referers, testing supplementary files, and adding some form of proxy support (likely passed as a command argument, since the cmdlets are operating within their own local command prompt session).

No new build today, until I finalize a few more bits to this cmdlet fiasco I’ve got going. Once the format is finalized, I can start re-writing the old scripts using the template, and release a more complete Alpha 2 release.

What is a cmdlet?

Today, I’d like to document the current state of what I’m calling a cmdlet, which is an integral part of the new version of BootZilla’s build process.

First, let me show you the current working template that all cmdlets are based on –

As you can see, I’ve commented the necessary bits and left placeholders in. Each cmdlet is named after the application that it is tied to. This enforces an easy to understand format, allowing additions and deletions to be easily made to the toolset. The main script file, BZBuilder, will loop through all the cmd files in the cmdlets folder automatically, and it will also build a list of found cmdlets in a text file (currently for debugging/logging purposes). You can then easily verify that a script actually executed by looking at the log file. Each cmdlet also has the ability to log a broken download to an error.log file in the cmdlets directory.

Each cmdlet handles every tool separately. This makes it incredibly easy to release patches for the toolkit without having to rewrite a ton of code. In the future, I’d like to make an easy script or application that takes a program name + url + copy or decompress options so that adding or editing tools is a very simple affair. For now, editing the template as needed is good enough for me.

This new system opens up a lot of new functionality that was previously either too clunky or impossible to offer. All using standard NT6 Batch Scripting.

Unfortunately, Windows XP/2003 will not be supported as an OS to build the toolkit on. You will have to use either Windows Vista/7/8/8.1+ to build the toolkit. This is why an ISO and IMG release will be available.

Alpha 1: http://www.bootzilla.org/wp-content/plugins/download-monitor/download.php?id=17

Questions/Comments? Sign up for an account and post away. I may open up anonymous commenting in the future.

One Week In: Proof Of Concept release!

I’ve completed a week worth of coding and testing the new build script. Currently, NT5 is NOT supported, due to the lack of the forfiles utility in the OS. I’ve tried numerous workarounds, including attempting to use the Windows 2000 version of Forfiles, but it seems to not work properly with the command switches I need for the script to work properly. More work will be done to try and get some form of NT5 support in the final build.

There’s a lot of missing logging bits in this POC, but at least it works, even if you run it as admin. A lot of work went into testing this early alpha look at the new toolkit.


Let me know in the comments what you want to see changed/included. The few tools in this release are the very first cmdlets I’ve created so far. I intend on offering all the tools I was going to have in the *ahem* cancelled v6 release, and then some.

BootZilla leaps off the tallest building… and out of development hell

Version 6 will not be released. Ignore its existence for the last 3 years. It was stuck in development hell for too long, and became stagnant.

BootZilla will continue in the shadow of the original toolkit, in a much smaller scale. In this case, Less Is More. I use that phrase when I work on computers – keep the OS clean, don’t load it up with extra bloat, and you will have a speedy system. With this sort of-mantra in mind, the next version will be developed and released periodically on a Quarterly release schedule. This means Winter, Spring, Summer and Fall releases, with optional minor patches to correct incorrect file url’s and the like.

The ‘future’ ideals of yesteryear will not come to fruition in the original development path. Don’t take this as a bad thing – take it as a huge leap in the right direction.

BootZilla – Fall/Winter 2014 — the first release of the new toolkit, will internally be known as version 1 of the new re-tooled toolkit and scripted updater. Subversions will be used for any post-release patches, should there be any need for them.

Questions? Comments? Feel free to drop me a line on what you, the user, the admin (computer janitor), wants to see in the re-invented BootZilla toolkit. All pages will be updated as I see fit, to broadcast the message of what BootZilla is supposed to be.