Announcing WssIndex 9
Wssindex disk cataloger version 9.0 beta is now available. The most
important enhancements are use of multiple CPU cores for faster
selection and sorting, extraction of information from additional file
types using 3rd-party packages LibMediaInfo and UnRarDLL, and index-time
WssIndex 9 is released as
GPL 3.0 freeware.
(7 was the highest version number for console-mode versions of WssIndex.
These versions are hopelessly obsolete and no longer supported. However,
databases created by any previously released version of Wssindex can be
read by the current version.)
Two versions of WssIndex are offered
- Windows 7 or higher.
- Windows XP works but the color scheme isn't quit right. Since XP
is no longer supported by Microsoft, I do only minimal testing and
do not recommend its use.
- Windows Vista has not been tested.
- Older versions of Windows will likely yield unresolvable missing DLL
- 64-bit version requires 64-bit Windows.
They two versions look and operate identically. Needed DLLs are
installed in the same directory as the program, so both versions of
WssIndex, and other Qt-based programs, can co-exist. Performance
differences are minimal, but the 64-bit version is not subject to the
2 GB process space limit imposed by 32-bit Windows so larger databases
are possible. You'll need 4 or more GB of physical memory to take
advantage of the increased capacity.
- one for 32-bit systems, built using the MinGW (Minimalist Gnu for Windows)
C++ compiler. Needed DLLs are included in the package.
- the other for 64-bit systems, built using Microsoft Visual C++ 2013.
The installer may, with permission, download Visual Studio runtime
files from Microsoft if they are not already installed.
- Discuss WssIndex in the Forums. My ISP
seems unable to keep its mail server off spam block lists, so the
opt-in email you should get if you register may be blocked.
Note: WssIndex installers are now digitally signed. This should make
it less likely that virus scanners will block downloading or
installation. If you're worried, you can submit the download URLs to
will download the installer and scan it with 43 different scanners.
WssIndex 9.0 installer package, 64-bit Visual C++ 2013 version
Executable with needed Qt 5.8 DLLs. Installer will download Visual C++ 2013
runtime from Microsoft if needed.
WssIndex 9.0 beta installer package, 32-bit MinGW version
Executable with needed Qt 5.8 and MinGW DLLs.
Old version, not recommended - WssIndex 8.0 installer package, MinGW version
Executable with needed Qt 4.72 and MinGW DLLs.
Old version, not recommended - WssIndex 8.0 installer package, Visual C++ 2008 version
Executable with needed Qt 4.72 DLLs.
Old version, not recommended - WssIndex 8.0 installer package, 64-bit Visual C++ 2010 version
Installer will download redistributable package if needed.
Old version, not recommended - Microsoft Visual C++ 2008 Redistributable Package
This is only needed for the 32-bit Visual C++ version of WssIndex on Vista
or older. Many programs use VC++ 2008 so you probably already have this
installed. If you get errors about missing msvcp90.dll or
mscvr90.dll, you probably do need to install this.
WssIndex 9.0 beta source code
Only needed if you want to build from source.
Old version, not recommended - WssIndex 8.0 source code
Only needed if you want to build from source.
- Qt Project Only needed
if you want to build from source.
Support for non-Windows operating systems
One reason for choosing Qt for WssIndex was its support for multiple
platforms. Early on, the Qt-based version of WssIndex was only a viewer
without Unicode support. At this stage, I copied the source to a Fedora
12 Linux system. After a few trivial code changes, it compiled and
worked. But, there are some serious obstacles to ports to other
- Drive letters: The concept of drive letters is unknown to most
operating systems, so indexing by drive letter doesn't make sense.
Indexing by UNC path could be done instead.
- File extensions: Not all operating systems use file extensions to
identify file types. To extract information from, say, JPEG files,
you first have to distinguish them from other files. Reading even the
beginning of every file to determine its type would slow indexing
- Windows-specific functions: Qt does not have OS-independent
functions to get file system information (volume name, free space,
used space, identify a mounted volume) or to eject a disk, so these
are done with Windows-specific code. Equivalent code would be needed
for each operating system supported.
- Case sensitivity of file names: The Windows file system is
case-insensitive but case preserving. Other systems are case
sensitive. This leads to potential ambiguities when copying
comment/category information during re-indexing.
- Byte order: Windows systems use little-endian
Current code would probably break in many places on a machine using
big-endian byte order.
Support for non-English languages
Qt is designed to make it easy to translate the user interface into
other languages. Text strings are marked in a way which allows them
to be extracted for a (human) translator. A table of translated text
is applied at run time. One executable supports multiple languages
through different tables. Widgets that make up the user interface
resize themselves to make text fit, so if a translated string has a
different number of characters than the original, adjustments are
WssIndex mostly follows the standards necessary to allow translation, but
no translations currently exist.
Why a GPL release was previously impossible
Here's how you get into a situation where you can't release your source
code even if you want to: Compilers typically include source code for
library routines. You find a library routine that almost does what you
want, but maybe it's buggy or maybe it needs a small change to meet your
needs. So you modify the source code and use it. As time goes on, you
change compilers multiple times, and the original vendor goes out of
business. Now your project depends on code that you're only licensed to
distribute as part of a binary. WssIndex for DOS had several such
routines; all have been replaced or are no longer needed in WssIndex.
WssIndex for DOS had a long manual, which is largely obsolete, in
WordPerfect format which is certainly not as popular as it once was.
Here are a few important notes:
If I had time to write good documentation, I'd do something else. [Anon]
- Program windows save their positions and sizes when closed
"normally," i.e. not by using the X at the top
right of the window. You'll almost certainly want to adjust sizes and
positions the first time you run WssIndex.
- The default configuration does not display all available database
fields. Use the Table-design option to control which fields are
- For the most part, WssIndex does not use complex queries with
multiple criteria. Instead, it uses simple queries with options to
add to or select from the currently displayed results.
- Watch for bubble help when your mouse hovers over selected dialogs.
- It's easy to imagine a disk catalog containing many millions of
files. WssIndex keeps the entire catalog in memory, so it will suffer
a performance hit if virtual memory needs to be used, and it cannot
exceed the 2 GB process space limit imposed by 32-bit Windows. There
are technical limitations on how many (scrollable) lines Wssindex can
displayed at once. So, query results are broken up into pages of
configurable size (the default is 100,000 entries but 1,000,000 is allowed).
- To edit volume names, comments, categories or extra-info, just
double-click on the displayed value. To delete a volume, right-click
on it in the volume list.
- Alternating row colors is recommended to improve readability of
layouts that spread file information across multiple lines;
elsewhere it's optional.
- Qt supports styles, or as most programs call them, skins, to
change how the program looks. WssIndex's style menu allows limited
skinning. There's a built-in Windows Modern Style, based on
code by Michal Mecinski and an option to load a style file. The
only useful style file currently available changes the font size on
menus and tool bars. Windows Modern Style is only fully implemented
under Windows 7 or Vista and is not currently applied when the mouse
hovers over the double buttons on toolbars. Styles loaded from
files are not currently saved. Style files can be specified on the
command line by -stylesheet=sheetname. (Equal sign with no
surrounding spaces is required.)
- WssIndex is very picky about the tags on mp3 files while players
tend to silently ignore problems. To get a "second opinion"
on the validity of an mp3 file, try
Mp3Utility. These will confirm some, but not all of the errors
that WssIndex reports.
- Extracting information from self-extracting files such as program
installers currently recognizes a rather limited number of formats.
Watch for improvements in future releases. Other archive and media
file types also need to be added.
- Databases written by any previous version of WssIndex can be read;
they will be converted to the new format when saved. WssIndex used
to put information extracted from files in to the Comment And
Category fields. Except for extracted comments, this was probably a
bad idea. Such information now has its own field. Existing comment
and category data will not be moved.
- The sort algorithm used is
This means that if, for example, you want to sort with file name as
the primary key and file extension as the secondary key, you can
click first on the extension column header and then on the file name
header and the you'll get the same result as a single sort with two
keys. WssIndex can also do a single sort with multiple keys. A
single sort is faster, but the user time to set it up will be more
than the time saved unless the database is fairly large.
Why did the console-mode version die?
- Unicode names: A console mode program can only display 256 different
characters. Code pages allow changing which characters can be
displayed, but do not increase this limit. Windows uses Unicode
for file names which means 64K characters are possible. WssIndex for
DOS would sometimes index a file, then be unable to open the file to
extract information from it because the conversion from Unicode to
Ascii character sets is not reversible. English language users would
only occasionally run into character set problems; for other languages
it was a real problem with no good solution. (This web page does not
use Unicode. As a result, it is unable to properly display the
accented characters in Michal Mecinski's name above.)
- Long file names: Displaying a table of file names was easy when
names were at most 8+3 characters long. Doing so in a text-mode
interface with names of essentially unlimited length was awkward and
- Programmer pride: Programming is an
and a programmer should to be proud of his product. As Windows took
over the computing world, text-mode programs became anachronisms. A
lot of time was wasted on text-mode versions that were never released
because even the author didn't like them.
What features have not been ported from the DOS version?
- Printing. The problem of nicely displaying potentially long-names
on paper is perhaps worse than doing so on screen. CSV (comma
separated values) export is available to move results into other
programs for custom report generation.
- Shell to DOS. Not useful in a multi-tasking operating system.
- Keyboard macros. Better implemented by 3rd-party programs.
- Support for NDOS. Does anyone use this anymore?
- Writing volume labels. Better done at the operating system level.
- Import comments. Might be implemented later.
- Interface to anti-virus programs. Anti-virus programs can be
configured for on-access scanning without needing any assistance from
- Recording of short file names. These aren't really useful. Short
names were all the original DOS version supported; later, long names
were added while retaining the short names.
- Flagging disks as bootable. Recognizing a disk as bootable is an
extremely hard problem. WssIndex for DOS assumed any disk
containing command.com in the root was bootable. That was an
embarrassingly naive algorithm.
Acknowledgments for tools used to create WssIndex