SDI 2023 Manual
SDI 2023 Manual
Reference Manual
BY G LENN D ELAHOY AND G REGORY TUMANYAN
Introduction .......................................................................................................................................... 4
Getting Set Up...................................................................................................................................... 5
Using Snappy Driver Installer 2022 .................................................................................................... 8
Application and Driver Pack Updates................................................................................................ 10
System Menu Options ........................................................................................................................ 12
Running From a Network Share ........................................................................................................ 14
Command Line Reference ................................................................................................................. 16
Verbose .......................................................................................................................................... 19
Configuration File Reference............................................................................................................. 20
Keyboard Actions .............................................................................................................................. 23
Scripting ............................................................................................................................................. 25
Running A Script ........................................................................................................................... 25
Config File ..................................................................................................................................... 25
Script Commands ........................................................................................................................... 26
GNU General Public License
This program is free software: you can redistribute it and/or modify it under the terms of the GNU
General Public License as published by the Free Software Foundation, either version 3 of the
license or (at your option) any later version.
This program is distributed in the hope that it will be useful but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the GNU General Public License for more details.
Developers
BadPointer, Glenn Delahoy, WindR, QuarQ
Tools
Snappy Driver Installer 2022 uses the following technologies:
Translations
Send your updated language files to https://t.me/Snappy_Driver_Installer. Your updates will
be included in the next release.
Introduction
Welcome to Snappy Driver Installer 2022, the original free and clean driver updater for technicians.
It's fast, portable and scriptable to help you get your job done faster. It can be used offline via a
USB drive to install drivers where Internet isn't available. It can be run over a local network for
corporate or workshop environments. No more searching for drivers after a clean install, just let
Snappy Driver Installer 2022 do its thing and your job will be done in no time. The perfect
technician's tool.
This document is a work in progress. If you see any errors or knowledge gaps, please let me know
so I can make it the most complete reference manual possible.
Getting Set Up
If you downloaded the entire package with a torrent client then you're ready to begin work
immediately. There's nothing else to do. SDI is portable and does not need to be installed into
Windows. You just copy it to wherever you need it to work. That might be a USB thumb drive, the
program files folder of the PC or anywhere else on a computer that's convenient.
If you downloaded the zip file from the home page, you should unzip it to a disk with at least 20GB
of free space.
There are two executable files: SDI.exe is the 32-bit version and SDI64.exe is the 64-bit version.
You'll obviously need to run the 32-bit version in a 32-bit Windows environment but you can run
either version in a 64-bit Windows environment although the 64-bit version will give you better
performance. There is a batch file called SDI_auto.bat which automatically detects and runs the
correct architecture.
When you run SDI for the first time you'll be presented with the Welcome screen.
SDI can work "offline" or "online". What this means is it can have the driver packs stored locally
with the application or available for download as required.
If you choose to work "offline", that is, you want to have all the drivers available locally then you
should download all the driver packs now. This will some time, they are big. When the download is
complete and the driver packs are indexed, you're ready to start working offline.
If you choose to work "online", that is, you want to download driver packs only as required then
you should download the indexes now. When this is complete, SDI will know what driver packs are
available for download and can begin matching your computer's devices. SDI automatically indexes
downloaded driver packs and keeps track of what's offline and what's online. When you scan a
computer, SDI will match all indexed drivers, both online and offline. If it finds a good match
online, it will display a message to that effect ("Internet") so that you know the driver pack will
need to be downloaded. During installation, any missing driver packs are automatically
downloaded.
The third option on the Welcome screen is Download Network Drivers Only. This option is often
used to get freshly installed computers online quickly by installing just the required network
drivers. This will also download the online indexes.
There is another option which is to do nothing, click the Close button. SDI is not very useful in this
state as it has nothing to match your devices against. However, it does report that driver packs are
available to download.
When you click on that bar, a dialog will pop up where you can select which driver packs you want
to download. If you know what you're looking for this is the best way to achieve it. Simply select
the category you want and possibly the indexes as well and click the Ok button.
SDI will begin downloading the selected driver packs. When it's done, everything is indexed, your
computer's devices are re-scanned and the results displayed.
If you're looking to get some other computer running you can either run the Create USB Drive
wizard from the system menu or close SDI and copy the entire folder to a USB drive and run it on
the other computer.
Using Snappy Driver Installer 2022
Having downloaded the driver packs and/or online indexes, you can now begin using the
application.
SDI will scan your computer and display a list of devices that match the given filters. The default
filters are Not installed, Newer and Better Match. Any device that matches any of these will be
displayed. If you want to change the filters it uses, select the Expert Mode check box. Additional
options will be displayed including the filter options.
From here, you simply check the devices you want to update and click the Install button. SDI will
begin extracting the required device drivers from its driver packs and install them.
If you have downloaded the online indexes and SDI requires a device driver contained in a driver
pack it doesn't yet have, it will download the pack before proceeding with the installation.
Here's a few recommendations:
You should always check the Create a Restore Point option so you can roll back if necessary.
Restore points are cheap, only take a few seconds to create and can be a life saver if things go
south.
Don't install too many drivers at once. Most of the time it will be fine but then you'll strike that one
time you'll wreak havoc on the system that can only be undone by rolling back *all* the driver
installations.
If you need to install USB 3 drivers, you should install them all at once. Essentially, the 3 drivers,
iusb3hub, iusb3xhc, iusb3hcs should always be installed together. The PCI bus (iusb3hcs) must be
the same version as iusb3hub and iusb3xhc. Make sure you are not running SDI from a USB 3 port.
Don’t update USB drivers while running SDI from a USB drive.
Don't update network drivers while running SDI from a network share.
Newer is not always better. If you want to be conservative, uncheck the Newer filter so you only
install missing and better matched drivers.
Application and Driver Pack Updates
Snappy Driver Installer 2022 automatically checks for updates each time you start the application.
If it finds application or driver pack updates it will alert you via the Updates bar on the main
window.
You should avoid downloading updates on a USB drive if it has limited space available. The
updates require at least as much free space as the total download size.
To begin updating, click the bar to open the Update dialog.
Here you can select any of the available updates or use the Selection buttons at the bottom to make
your selection:
Check All: Select all available updates.
This PC only: Select updates appropriate for the PC on which you are currently working. If this is
the first time using SDI or you have not yet downloaded the indexes, this option cannot select
appropriate driver packs. What it will do instead is select the indexes. Once you have downloaded
the online indexes and your computer's devices have been rescanned, you can return to the Update
dialog to select driver packs for this PC.
Network Only: This selects all the LAN, WWAN and WIFI driver packs. This is often used to get
another computer online quickly by downloading and installing only the network drivers.
Other options are:
Show only updates: This will hide updates for any driver packs that you don't already have. The
result being you only update the driver packs you are interested in.
Pre-allocate disk space to avoid HDD fragmentation: Allocate full file sizes on disk before starting
downloads, to minimize fragmentation. Only useful for HDDs.
You can also click on the column headers in the list view to sort on that column in ascending or
descending order.
System Menu Options
The System menu can be accessed either by clicking on the icon at the top left of the application
main window as illustrated here:
There is some path information embedded in the driver pack indexes, the exact nature of which I’m
still exploring. This slightly complicates running it from a network share. The paths it uses are
based on the SDI configured paths. In the GUI, you can see these paths in the Setting dialog, Paths
page:
These values are used when creating the indexes. If you try to run SDI from a network share and
these paths don’t match up, the indexes will be deleted.
So, the correct approach is to create the indexes in the same scenario that they will be used. If you
intend to use SDI locally, either copied on to a computer or on a USB drive then run it locally when
creating the indexes. If you are setting it up to run over a network share then create the indexes
while running over that network share.
To set up network share paths in the sdi2.cfg file just prefix the directories with the share UNC
path:
"-drp_dir:\\server\SDI\drivers"
"-index_dir:\\server\SDI\indexes\SDI"
"-output_dir:\\server\SDI\indexes\SDI\txt"
"-data_dir:\\server\SDI\tools\SDI"
"-log_dir:\\server\SDI\logs"
Where server is the name of your server and SDI is the share name. You may choose to use a
separate writable share for the logs path while the main SDI share is read-only.
"-log_dir:\\server\SDI-logs"
How to create indexes? Simply close the application, delete the contents of the indexes subdirectory
then run the application again. It will automatically recreate the indexes. If you want to use SDI
over a network share then run it over that share to create the indexes.
Make sure the share has write permissions, at least while you’re building the indexes. You can
change it back to read-only later if you want. SDI will happily run in read-only mode.
Command Line Reference
All commands begin with a dash, “-”. In addition to the following commands, any option or setting
listed in the Configuration File chapter can be added to the command line.
-?
Show the help window.
-script:<scriptfile> [options …]
Execute the given script with options. If this option is found on the command line, all options
before it are ignored. See the Scripting chapter for details.
-cfg:<filename>
Loads the configuration from the given file. See the Configuration File chapter for details.
-7z
Executes the given 7-zip command. For details, see the 7-zip manual. An error of 2 usually
means "File Not Found". Use this to extract driver packs manually.
SDI.exe -7z x DP_TV_Beholder_14020.7z
-verbose:<flags>
Sets log detail level.
-ls:<file>
Loads snapshot.
-nologfile
Suppress creating logs.
-nosnapshot
Suppress creating snapshots.
-nostamp
Creates logs and snapshot without timestamps.
-getdevicelist:<file>
Writes a text file containing details of all installed devices and drivers.
-activetorrent:<num>
Select the active update torrent. By default, the active update torrent is 1 which is the SDI
application and driver pack updates. You can also select 2 which is the driver pack update
torrent. The driver packs are updated more frequently than the SDI application so if you
absolutely must have the very latest driver packs, you can set the active update to 2 and
download the very latest.
You can also do this from the System Menu on the main application window.
-a:32
Emulate a 32-bit Windows environment.
-a:64
Emulate a 64-bit Windows environment.
-v:<version>
Emulate any given Windows version.
-extractdir:<dir>
Use the given directory to extract the driver packs. The default is "%temp%\SDI".
-keeptempfiles
Do not delete extracted driver pack files.
-finish_cmd
Specifies a command executed upon completion of driver installation.
-finishrb_cmd
Specifies a command executed upon completion of driver installation when a reboot is
required.
-finish_upd_cmd
Specifies a command executed upon completion of driver pack updates.
-keepunpackedindex
Prevents updating indexes for unpacked drivers.
-failsafe
Disables indexing WINDOWS\Inf.
-disableinstall
Disables driver installation and restore point creation.
-reindex
Force reindexing of all driver packs.
-index_hr
Creates text format (so called human readable) indexes.
-preservecfg
Do not overwrite the configuration file.
-PATH <pathtodrivers>
-noGUI
Runs without GUI interface.
-autoupdate
Automatically downloads all available driver pack updates.
-autoclose
Automatically close the application after downloading driver pack updates. If -autoinstall is
specified, the application will close after installation is complete.
-autoinstall
Automatically begin driver installation.
Verbose
The -verbose:<flags> switch is used to set log detail level. For example, in order to log only
sections DeviceInfo and manager_print you have to calculate the sum: 4+16=20.
SDI.exe -verbose:20
LOG_VERBOSE_ARGS 0x0001 1 Sections: "Settings"
The configuration file is called “sdi2.cfg” by default but you can call it anything or have many
configuration files and use the “-cfg” command line option to load the required configuration file.
The following commands and settings may be added to the cfg file. If these commands or settings
are included as a parameter on the command line, they will be saved to the cfg file.
If the -preservecfg command line option is used, the cfg file will not be updated.
-drp_dir:<dir>
Path to driver packs. This can be a relative path, an absolute path, a different drive, a
network drive or a mapped drive. The default is “drivers”, a sub-directory of the SDI
application.
-index_dir:<dir>
Path to indexes.
-output_dir:<dir>
Path to indexes in human-readable format.
-data_dir:<dir>
Path to translations and themes.
-log_dir:<dir>
Path to logs and snapshots.
-lang:<name>
Current interface language.
-theme:<name>
Current theme.
-hintdelay:<time>
Sets hint delay.
-wndwx:<num>
Sets window width.
-wndwy:<num>
Sets window height.
-wndsc:<num>
Sets window show command (1=show normal, 2=minimized, 3=maximized).
-scale:<size>
Sets scaling for GUI (normal size: 256).
-filters:<flags>
Sets filters.
-port:<num>
Port for incoming connections
-downlimit:<num>
Download speed limit to set in Kbytes/second
-uplimit:<num>
Upload speed limit to set in Kbytes/second
-connections:<num>
Maximum number of simultaneous connections
-expertmode
Enable the expert mode.
-showconsole
Display console window.
-norestorepnt
Suppress creating of restore point.
-nostop
Don't stop if restore point fails.
-novirusalerts
Suppress alert about autorun.inf on the SDI’s drive.
-showdrpnames1
Shows driver pack names on the right.
-showdrpnames2
Shows driver pack names above.
-oldstyle
Puts the match results text underneath the device name rather than to the right.
Keyboard Actions
Control
Compare the installed driver to the available one (same as expert mode)
Space
Info about alternative drivers (same as opening the sub list of available drivers)
Shift + Control
Same as Space down
Tab
Move forward through control boxes
Shift + Tab
Move backward through control boxes
Cursor Down
Move forward through controls within a control box
Cursor Up
Move backward through controls within a control box
Control + "+"
Increase GUI scale
Control + "-"
Decrease GUI scale
Control + 0
Reset GUI scale
Control + Z
Add a divider line to the log
Control + A
Select all drivers
Control + N
Deselect all drivers
Control + I
Begin driver installation
Control + F5
Rescan devices
Control + F6
Show all possible item bars. Useful for theme development.
F7
Record all desktop windows information to log. Useful for catching rogue installer dialogs.
F8
Cycle through driver pack name display modes.
Scripting
You should test your scripts thoroughly before using them on mission critical or customer
machines. Let me know what bugs you find and what needs to be added. As usual, any loss is your
problem, not mine.
Script mode is console only. The main thing to keep in mind is that, being a script, everything
happens in a linear fashion, one thing at a time, like a batch file and certain things need to happen
before others. A script is a simple text file and can be created with Notepad or your favorite text
editor. There are a few example scripts included in the package. If you modify any of these, be sure
to rename them so they don't get overwritten by future updates.
Running A Script
To run a script, start SDI with the -script:<scriptfile> command line argument.
For example:
SDI64.exe -script:scripts\example-script.txt
If the script command is found, all prior arguments on the command line are ignored and the
following 9 arguments are fed into the script as %1 through %9 parameters. %0 represents the
script file name. These replaceable parameters can be used anywhere within the script. For
example, in a goto command.
An example with options:
SDI64.exe -script:scripts\example-script.txt option1 option2
where:
%0 = "scripts\example-script.txt"
%1 = "option1"
%2 = "option2"
In the script you might have a command like "goto %1" which, in the above example, would
expand to "goto option1". A command of "goto %2" would expand to "goto option2".
Config File
The config file is ignored and all command line arguments prior to -script are ignored. Therefore,
all configuration is done within the script. Make no assumptions except the following defaults.
Defaults:
No log file
No snapshot
Verbose: nothing
Script Commands
Each line of the script file is one command followed by any arguments, separated by spaces. There
is no leading "-" or "/" sign. Any line beginning with "#" or ";" is a comment and is ignored. Any
line beginning with ":" is a label used as a target for a "goto" command. Arguments given in
triangular brackets, "< >", are required and will give an error if missing. Arguments given in square
brackets, "[ ]", are optional and may be omitted. Defaults may or may not be used for each
command.
init [reindex]
Initializes the scripting engine, loads the indexes and drivers, builds any missing indexes
and scans the current PC for devices. This should nearly always be done after setting
directories and before anything else. It can also be used at any point in the script to reset the
engine and allow new driver packs to be indexed locally or a change of path configuration.
If the optional "reindex" argument is given, all indexes are rebuilt.
checkupdates
Downloads the latest update torrent and reads it into memory. You must do this before other
update commands. If you don't do this or it fails, all subsequent update commands will fail.
If you're in an environment where you don't want the torrent client to activate then don't run
checkupdates.
app
Downloads the latest application, tools, languages, themes and all other files that are
not drivers or indexes.
indexes
Downloads the latest online indexes.
driverpacks <all | missing | updates | selected>
Downloads driver packs. Specify one of the given arguments.
For example:
get driverpacks updates
select < [missing newer current older better worse] [drpfilters] >
Select the drivers to be installed. The equivalent on the GUI is setting the expert filters and
then click Select All. Specify one or more of the given arguments separated by a space.
For example:
select missing newer better
To further narrow your selection, you can specify one or more driver pack filters. These are
specified by using the middle part (in between the underscores) of the driver pack zip file
name. So, for example, specify "lan" to include only those drivers found in the
"DP_LAN_xxxxx.7z" driver pack. Other examples are: chipset, printer, video, wlan-wifi,
wwan-4g.
For example:
select missing lan
This will select missing lan drivers. That is, a matching driver is both missing and in the lan
driver pack.
Select missing better lan wlan-wifi
This will select missing or better drivers that exist in the lan or wlan-wifi driver packs.
You can specify any combination of regular filters and driver pack filters. Anything that
doesn't match one of the six regular filters is assumed to be a driver pack filter. If you
specify a non-existent regular filter or driver pack filter, nothing will be selected. If you do
not specify a regular filter but only a driver pack filter, nothing will be selected.
install
Install the selected drivers. If drivers are not found locally, they will be automatically
downloaded if checkupdates previously completed successfully. You don't need to do a 'get'
command, just the 'select' and 'install'.
snapshot [filename]
Saves a snapshot to disk. If the optional "filename" argument is specified, the snapshot is
saved to that file. If the file name is not given, the snapshot is saved to the logs directory
with a time stamp in the file name.
loadsnapshot <filename>
Loads the specified snapshot from disk. This must be placed immediately before the "init"
command. The init command will then load the snapshot instead of scanning the PC. In
theory you can do this many times in a script.
unloadsnapshot
Returns to "real" mode. This must be placed immediately before the "init" command. The
init command will then perform a normal scan of the current PC.
writedevicelist <filename>
Saves the full list of devices and drivers to the given file name.
restorepoint [description]
Create a restore point using the specified description. If no description is given, a default
description is used.
logdir <directory>
Sets the log directory to the given directory. Place this before the logging command.
drpdir <directory>
Sets the driver packs directory to the given directory. Place this before the init command.
indexdir <directory>
Sets the index directory to the given directory. Place this before the init command.
extractdir <directory>
Sets the temporary directory used for archive extraction. If it's not set, the default is "%temp
%\SDI\". Place this before the init command.
torrentport <port>
Set the torrent listening port. The default is 50171.
activetorrent <num>
Set the active updates torrent. A value of 1 is the normal SDI updates, a value of 2 is the
driver packs updates.
echo [any text]
Displays the given text to the console.
debug [on|off]
Sets the console/log verbosity to debug. This is the same as LOG_VERBOSE_DEBUG.
logging [on|off]
Enables logging to file.
verbose [verbositiness]
Controls the console/log verbosity. See the Verbose chapter earlier for details.
enableinstall [on|off]
Controls whether restore points are actually created and drivers are actually installed. If "on"
is specified, restore points are created and drivers are installed. If "off" is specified, all the
actions right up to the point of driver installation and/or restore point creation are performed
but the actual installation/creation is skipped. This provides a way to test things without
trashing your PC.
reboot [ifneeded]
Reboot the machine now. If the optional "ifneeded" argument is specified, reboot will be
initiated only if the most recent install command has indicated a reboot is required to
complete driver installation.
runlatest [arguments]
Run the latest version of SDI. Do this after an application update to start using the latest
version straight away. The executable architecture is preserved. In other words, if you are
currently running the 32-bit version of SDI then this command will run the latest 32-bit
version. If you are currently running the 64-bit version then it will run the latest 64-bit
version. You should follow this command in the script with an "end" command to shut
down the previous instance of SDI.
You can include arguments to be added to the SDI command line. The following example
will download the latest application, run the latest version with a script and terminate the
current version (the new version will continue to run).
get app
runlatest -script:scripts\update-drivers.txt
end
pause
Pause script execution until a key is pressed.
cmd <command>
Execute the given command in a command shell.
end
Immediately ends execution of the script.
goto
Transfers script execution to the line following the specified label. The label
reference can contain the ":" prefix or not.
goto <label>
Transfers script execution to the line following the specified label. The label reference can
contain the ":" prefix or not.
end
End script execution.