What is MSI?
MSI is a way to install Windows software.
MSI is a free database program.
MSI is a handy tool for scripters.
A few years ago Microsoft developed a new
system for installing software onto Windows. The system is
referred to as
"Windows Installer". Software installed by Windows Installer comes packaged
in
a file with the extension ".msi".(Sometimes the MSI file is packaged inside an EXE file.)
For the purposes of this webpage,
Windows Installer and MSI are defined separately, with MSI
being the database and object model, while "Windows Installer" refers only to Microsoft's use of MSI files
for software installation.
An MSI file is actually an SQL database. A scriptable object provided by msiexec.exe
(the WindowsInstaller.Installer object) is really a simple SQL "engine", offering an extensive set of functions for accessing and
manipulating an MSI database.
Windows Installer (WI) refers to using MSI database files as the "housing" for a software installation.
An MSI file used to install software through WI contains
the software install settings and usually contains the software itself, packed inside the MSI.
Unfortunately, the Windows Installer system is extremely - even bizarrely - complex.
It uses an MSI database that contains approximately 80 tables, with extensive cross-referencing
between the various columns of those tables.
The structure of MSI databases, when they are used as Windows Installer installation files, is so complex,
convoluted and poorly designed, with data so heavily cross-referenced - and the available tools are so limited - that few
software developers
using WI actually create their own installation files. The basic software installer tasks of creating
simple dialogue windows, copying files to the system, etc. are daunting challenges under the
WI system. Windows Installer is so difficult to use that most software developers who ship MSI installation
packages build them with some kind of 3rd-party software built on top of the WI system. And some of those 3rd-party
systems, such as InstallShield, just cram their own installer EXEs into the MSI so that they can provide
whatever functionality they want to while still honoring Microsoft's MSI "standard".
It's a rather absurd situation: Microsoft has created a comprehensive software installation system
for Windows. The files for that system total close to 3 MB. To put that in perspective, it's almost 3 times as big as the
Visual Basic support file. It's twice as big as all the files that comprise the Windows Script Host. All that just to help in the
job of installing software, which amounts to copying files, making some shortcuts, and creating Registry entries.
Microsoft's new system should have
finally made software installation very easy and standardized, with little more than a simple inventory text file (like a .ini file)
required to carry out an install.
Instead, the result has been increased complexity, with 5 different versions of the installer that are each incompatible with
earlier versions, and virtually no tools to work with the Windows Installer system: Software developers end up needing
other, specialized
software developers... to write specialized software... that makes sense of Microsoft's specialized installer
software... in order to produce specialized software... to install their software.
Perhaps Microsoft deliberately made a mess of Windows Installer so
that InstallShield and Wise could stay in business. After all, if Microsoft had created a simple, intuitive
and functional system for installing software onto Windows then no one would have any
reason to pay for 3rd-party installer software, and that might leave MS open to more lawsuits.
Whatever the real story
is behind the design of the Windows Installer system, as you may have guessed by this point, the downloads
and information here are not intended to help anyone use the Windows Installer system to build a software installer.
Why be concerned with MSI files?
MSI databases are scriptable. While Windows Installer is arguably of little value for
its intended purpose of installing software,
there are three useful ways in which script
can take advantage of MSI files and the MSI object model:
1) Inspecting and editing software installers. Many companies package their software installations as
MSI files because Microsoft is pushing it so strongly. (Any company that wants to
add an official Microsoft "Approved for Windows" logo to their software packaging must use MSI installation.
Some companies even build their own installers packaged inside an MSI, just to
comply with Microsoft's wishes.)
The advantage of MSI for
the software customer is that an MSI file is entirely transparent, given the right tools.
VBScript can be used to unpack, document, and even alter the installation parameters
of an MSI installer. You can unpack an MSI file, extract the files inside, and find out
what Registry entries will be made when you install the software. With some work, you
can also redesign the install options. The MSI Unpacker (see below) comes with sample
scripts to auto-create a VBScript-based installer from an MSI, which can then be edited as desired.
The MSI Editor (below) provides the ability to easily edit the MSI database through
a webpage-based GUI. An example of how that might be useful: It's not unusual to find software
installers that require a particular version of Internet Explorer, even though Internet Explorer
may not actually be used by that software.
If the installer is an MSI file you can often edit the installer
to remove such irrelevant requirements.
2) Bypassing MSI limitations. (For software developers.)
The original inspiration for the MSI utilities here
was a problem that arose several years ago. A small, custom Text-To-Speech utility written for a blind
person required SAPI 5 Text-To-Speech support. It turned out that Microsoft had only provided two ways to install SAPI 5 TTS support.
One option was to just install the 98 MB SAPI SDK on the target machine. The other option was to study the Windows
Installer system, then remake the
utility installer as an MSI, then download 100+ MB of files in the form of "merge modules" (.msm files), and finally let Windows Installer
decide how to put it all together! Those options were both ridiculous, just to install a handful
of support libraries that totalled 6+ MB. The sample VBScript installer for SAPI 5 TTS support (included with
the MSI Unpacker utility download) was the upshot of that dilemma. It uses the Windows Installer object model, through
VBScript, to generate a VBScript installer for only the features and/or components of a software installer
or merge module desired, without needing to install via MSI. The sample demonstrates how the MSI object model
can be used to bypass MSI limitations - and MSI usage altogether - when installing software that may require
Microsoft redistributables.
3) Using MSI files as databases. The MSI system used by Windows Installer is essentially a
free SQL database program that is installed on nearly all versions of Windows.
Aside from its role as a software installation package, an MSI file can be used as a database.
The scripting functionality provided through the WindowsInstaller.Installer
object enables a fairly simple VBScript to carry out all the basic functions needed to use
an MSI file as an SQL database. The ZipFinder utility below is an example of how
MSI databases can be used. The ZipFinder started as a blank MSI file. VBScript
was used in combination with the WindowsInstaller.Installer object to create tables
in the blank MSI and load them with the relevant zip code and area code data. The ZipFinder
interface is a simple webpage that uses the same WindowsInstaller.Installer object, via webpage scripting, to
read from and write to the zip code database - a list of some 43,000 US zip codes.
Windows Installer Documentation:
The VBScript class provided here, along with the associated documentation
(included with the MSI editor) provide the basics needed to use MSI files as custom databases.
If you want more information about Windows Installer and the WindowsInstaller.Installer object,
there is a good help file named msi.chm. The help file is part of the MSI v. 1.1 SDK (8MB)
that should be at this link:
http://www.microsoft.com/downloads/thankyou.aspx?familyId=e96f8abc-62c3-4cc3-93ad-bfc98e3ae4a3&displayLang=en.
As of this writing, Windows Installer is up to version 4, but v. 4 is Vista-only and the changes between versions
seem to be minimal, so the v. 1.1 help should be
adequate.
If the link above is no longer valid then it may be difficult to find or access the help file, as the current version
is only available through the full Windows SDK download. And the actual Windows Installer help file, Msi.chm, is quite large --
not well-suited to reading online at the MSDN website, which is surprisingly disorganized, spread out,
dysfunctional, and bloated with superfluous pages. (And links at MSDN are often changing or being deactivated, without a forwarding
link being provided. If it were not for Google, one might never find anything on MSDN. In fact, as of this writing, all of the links
to updated information that are available from the link above were dead-end links leading to error pages!)
Note to Firefox users who do want to research MSI on MSDN online:
Microsoft seems to be determined to "downgrade" their MSDN2 site in non-IE browsers. First they were
inserting style code that would block Firefox from having a scrollbar. Then the site was changed and
a different problem appeared: In some cases the right-side content pane of pages may render as
just a big gray rectangle.
To circumvent such problems,
select
View ->
Page
Style ->
No Style from the Firefox menu.
If you cannot find the v. 1.1 SDK then the only other
option will be the so-called "platform SDK", which presents a dilemma: While Windows documentation used to be freely downloadable,
more recently Microsoft has been making it difficult for anyone to obtain any
documentation without signing up, allowing the installation of their "Windows Genuine Advantage" snoopware, and downloading
the entire platform SDK. That means that in order to get later MSI help files, you will need to be on
XP SP2 with a high-speed connection; you will need to submit to Microsoft's spyware and prying; you will need to "register"; and you may
have to buy an MSDN subscription.
Who can use the downloads on this page?
The code here is composed of VBScripts and scripted DHTML webpage
utilities. There is no compiled code. It is all simple text: VBScript, HTML and CSS. The downloads
here are especially designed for use by VBScripters and/or people working with Windows Installer.
But you don't have to know VBScript, HTML, or CSS. The MSI unpacker and editor,
and the zip code utility, are interactive webpage programs that might be useful to almost anyone.
If you
are familiar with VBScript, you can use the free utilities here for your own purposes
in working with MSI files, or use them as code samples for guidance in using the MSI object model.
Since these programs are composed of simple text, they can also be altered and new functionality
can be added as necessary.
MSI Unpacker Utility
The MSI Unpacker utility is a webpage program (HTA) for working with MSI and MSM Windows Installer files. It is designed
for use by anyone who might want to inspect software before installing it.
An increasing number of software programs are now being installed through the MSI / Windows Installer
system. The MSI Unpacker can be used to open, extract files, and document the contents of an MSI or MSM file.
It can return program descriptions, lists of components and an almost-ready-to-run script containing the
Registry settings required for a given MSI program installation.
The MSI Unpacker returns nearly all of the information stored in an MSI file. So you can use it to inspect
software before installing, or use it to create your own, customized install/uninstall packages from the
parts of an MSI package that you want. The download includes a sample project that uses the MSI
Utility to create an installer for the Microsoft Text-To-Speech runtime - a runtime that is not normally
available as a separate install.
This utility does not require prior knowledge of script or MSI files. The earlier version of
the MSI Unpacker required a ZIP program and a bit of editing in order to perform the MSI file extraction aspect of unpacking, but
this latest version is ready to run...
Just double-click the HTA file in the download and browse for an MSI file to unpack.
There are no functions in this utility for authoring MSI files, if that's your interest, but there are
numerous examples of accessing the various database tables. Those might be useful if you're
working with Windows Installer via script.
View picture of MSI Unpacker
Download msiext.zip (173 KB)
Update note - 3-30-08: The program interface has been updated to simplify
operation. This update was tested with IE 5 and 6. It should work fine in both, but IE6 is buggy. If you
have any problems feel free to write.
Back to Index
Basic MSI Unpacker - For Linux and drag-drop Windows unpacking
The Basic/Linux unpacker is essentially the same thing as the MSI Unpacker described above,
but without the Internet Explorer webpage-based GUI and without the
extra script samples. It just unpacks MSIs. On Linux this is a command-line utility that eliminates the complication
of using Internet Explorer. On Windows it's a simple drag-and-drop unpacker, useful when
you just simply want to unpack an MSI and don't need to inspect the parts.
This is the easiest MSI unpacking option for people who are not technically inclined.
It is literally a 1-click unpacker when used on Windows.
To use this utility in Windows, first download linmsi.zip (below). Open the linmsi.zip download
and extract the files into a single folder. (The MSIUnpack.vbs file and the jCABexu.exe file must be in the same folder.)
Next, put your MSI file into an empty folder. (Unpacking can create
numerous files and subfolders, so it's best to put the MSI into it's own folder before unpacking.)
Finally, just drop the MSI file onto MSIUnpack.vbs. That's it. You'll get the unpacked software, with all files
extracted and placed in a folder hierarchy that reflects their destination folders when the software is installed. There will also be
a documentation file - an unpack log - listing included files, Registry settings
that are part of the install, etc.
To use this utility in Linux is another issue altogether... An increasing number of
people have been looking for an MSI unpacker for Linux.
This unpacker is not written natively for Linux. That would not be possible without writing a
Linux version of the Windows Installer system. This is the same basic VBScript used in the
regular MSI Unpacker. By skipping the GUI it avoids the notorious problem of trying to run
Internet Explorer on Linux, however this unpacker still needs some things that are installed by default on Windows,
that will have to be installed through WINE on Linux:
The Windows Script Host (at least v. 5.1)
The Windows Installer package (Any version. This is a self-executing CAB, usually named instMsi.exe.)
The VB6 runtime (MSVBVM60.DLL - needed by the custom CAB extractor that the script uses.)
The Windows Script Host installation will probably require that you hand-register the COM libraries:
vbscript.dll, wshom.ocx, etc. In the case of the Windows Installer installation, the DLLs may need to be
hand-copied to the WINE system32 folder. Then msi.dll and msihnd.dll may need to be hand-registered.
But even then this unpacker may not work. So far, in limited Linux testing (SUSE 10, WINE .9.10), there seem to be
problems with the script as-is. It seems to fail on the line
where the WindowsInstaller.Installer object is created. Matters are not helped by the primitive command line
operations and tedious case-sensitivity required on Linux to do file registering, running of scripts, etc. A simple
debugging problem quickly becomes an all-day fiasco. To anyone who decides to take the trouble to iron out all the
glitches for this script to run on Linux, feel free to send an email with your results. Perhaps a more Linux-friendly
version of the script can eventually be posted here.
Linux software installation issues:
If you succeed in running this unpacker on Linux, it may provide a solution for MSIs that will not install.
In many cases an actual install is little more than a convenience, anyway, and not
necessary to run the software. In those cases you can just unpack the MSI and take out
the relevant program EXE. In cases where specific COM registrations or Registry settings
are necessary, those requirements can be gleaned from the documentation text file produced
by the unpacker.
In a surprising number of cases an MSI may have faulty settings that cause
problems on Linux. A common, rather odd, problem is unnecessary IE version requirements.
(See explanation in MBase MSI Editor topic below.) The MSI Editor can often be used to fix
faulty MSIs, but the MSI Editor is an HTA webpage program, requiring IE v. 5+. It also requires some extensive study of the
inner workings of the Windows Installer
system, which is a Rube Goldberg-style calamity that you probably do not want to delve into.
(Hence the large number of faulty MSIs. Building a non-faulty MSI is, as the geeks like to say, "non-trivial".)
If you have an MSI that will not install on Linux, it might work to try
changing the Windows version setting in WINE. For the all-too-common IE version requirement, whereby
MSI installers sometimes refuse to work unless a specific (and typically irrelevant) version of IE is installed:
Different MSIs may use different methods to check the IE version, but you might be able to
fool an MSI by placing a late-model copy of SHDOCVW.DLL in the WINE system folder and
adding the following string value to the WINE Registry:
HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Version
A good value to use would be "6.00.2900.2180", which is the version of IE in WinXP SP2.
But generally a version check is only checking for a minimum version or sub-version number and not for a valid version number,
so 9.99.9999.9999 might be a better choice.
Download linmsi.zip (54 KB)
Back to Index
Issues With Non-MSI Files: Getting MSIs from Inside EXEs
Microsoft's general position on Windows installers is that they should be created as MSI
files and that those MSI files should not be "wrapped" in other files. However, there are
many types of installers and Microsoft themselves are famous for not following their
own directives. Many of their downloads are actually self-executing CAB files. Some of the
Microsoft program installers are actually InstallShield packages. (In both cases these are
.EXE files.)
If you have an unknown installer type that you are trying to open, you
might try looking at the
Tweaks and Fixes page. There is
a section there that has links to information and software. Perhaps the best software option
is
Universal Extractor,
a program that combines a number of freeware extractors. Universal Extractor (UE) cannot handle
MSI files (even though it tries to) and it will often fail on other installer files due to unsupported
versions. For instance, UE can open InstallShield installers, but only if they were created with
older versions of the InstallShield program. But even where UE fails it can still, usually, at least
tell you what kind of installer you have.
MSI files inside EXE files
It is fairly common to find software that installs from an MSI
file but which is packed inside an EXE file. Some recent version InstallShield
packages are designed that way, for example. If you can't get at the contents
of a given installler EXE file, it's always worth checking for a hidden MSI. Open
the TEMP folder (usually C:\Windows\Temp) while running the installer. Leave
the setup window open while checking to see what the installer unpacks. If the installer
unpacks a folder to TEMP, check there for an MSI file. If you find an MSI file,
copy it to somewhere else, then cancel the install. (Setup must be left running because it
will usually delete the files in the TEMP folder when it quits.) The resulting .MSI file
will be the real program installer.
Further complications can be caused by an installer that asserts requirements.
For instance, some of Microsoft's downloads now require a version of the ".Net Framework",
which is a large collection of support files for their ".Net" software. (.Net is basically Microsoft's version of Java.)
If you don't have the required version of the .Net Framework installed - and you don't
have an adequate firewall - the installer will download and install the framework without
even asking you! The .Net Framwork comes in 5+ versions, with the largest comprising
about 100 MB. Yet very few software programs actually use any of the .Net Frameworks.
So you may not want all of that bloat downloaded to your PC, adding 100 MB just to run
a 1 MB program.
Another common installer requirement that can thwart an install, and\or thwart the unpacking
of a setup EXE file, is the demand that a particular version of Internet Explorer be installed.
This is an especially odd requirement. In most cases the software does not even use Internet Explorer!
For problems with Internet Explorer requirements, try changing the version
number in this Registry value:
HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Version
For problems with demands for .Net Frameworks, if you just want to open an
installer EXE file and may not want to actually install the program in question, you can spoof
.Net support temporarily. For that, see
this file.
That link should open in your browser as text. Copy the text, paste it into Notepad or another plain text editor, then
save that as a file named
Spoof Dotnet.vbs. Note that the file extension must be .VBS, not .TXT. When you
double-click that file you will be given an option to add or remove the DotNet spoof from the Registry. Once added,
software installers will think that whatever version of the .Net Framework they want is already installed. The
script adds Registry settings that say you have all 5 .Net Frameworks. For good measure, it also tells querying
software that you have Service Pack 3 of each Framework, and version 3 of Windows Installer.
(
Caution: This script is mainly for people who do not want to install the numerous .Net
support files. The script will record in the Registry that all 5 .Net Frameworks are installed. Likewise,
removing the spoof will remove those settings, even though you may have one or more frameworks installed.)
Back to Index
MBase - MSI Database Editor
The MBase MSI Editor is a database program, created as a webpage and using MSI database files.
The editor can display the content of MSI files and allows you to add or remove tables, rows and columns.
You can also edit individual row cells through a convenient graphical interface, export the text
of specific tables or all tables, and export, insert, or overwrite embedded MSI CAB file data streams.
(Embedded CABs are the most common way to store the actual software files in an MSI/MSM installer file.)
MBase
can be used to work with MSI software installation files, but it's designed to be more adaptable
than that. It can be used to create your own databases from MSI files, designing the tables
for your own specific needs rather than using the standard MSI tables. (See the ZipFinder sample below.)
MBase can also be used to adjust poorly designed software installers.
Example: As mentioned in the introduction above, a surprising number of software installers insist on having a
specific version of Internet Explorer, even though they don't actually require a browser at all. Hewlett Packard printer software
is one example of that. (Actually, much of the software and many of the driver installers that come with PC hardware seem to be slipshod
productions done on a tight budget. HP is not alone. But writing a printer driver installer that requires a specific browser version
is inexcusable stupidity that never should have made it into the final product.) A nonsensical IE requirement is especially
a problem because updating Internet Explorer is a tricky business that can often go wrong. IE version requirements and other
similar installation problems can often be bypassed with MBase. If the software is installed via MSI, you can just open to the LaunchCondition
table to check for installation requirements, and change MinVersion / MaxVersion
fields in the Signature table to alter install requirements. (Or even better, just remove all rows from the LaunchCondition and/or
InstallCondition tables, if they exist, in order to remove installation restrictions.) Of course, that won't make
software run on Windows 98 if it was written only for Windows NT systems, but it may at least
save you from wasting unnecessary time with badly designed MSI installers.
View picture of MBase MSI Editor
Download msied.zip (59 KB)
Update note - March 6, 2008: The MSI Editor is an HTA utility that runs in Internet Explorer. In earlier versions,
the editor worked smoothly with IE5, but with IE6
the actual code of the editor required slight editing to get the sizing of window elements right on different displays, due to CSS
bugs with IE6. Obviously that was a problem for people with no HTML/CSS experience. This current update has been designed
to solve that problem. It has been tested with IE5 on Win98 and IE6
on XP SP2, at both 800x600 and 1024x768 resolution. In most cases no adjustments should be needed.
(See the help section in the main window for further details.) The editor has not been tested with
IE7.
Back to Index
ZipFinder Zip Code and Area Code Database Program
ZipFinder is a webpage program that uses an MSI database file to hold and access approximately
43,000 US zip codes and most area codes. You can enter city/state names to return a zip code, or enter a zip code
to return the respective city and state. You can also enter an area code to find its location.
ZipFinder does not require any knowledge of script or webpages. Just download
the zcodes.zip file and extract the contents. You will have a folder named "ZipFind". Put the
folder anywhere, then create a shortcut on the Desktop going to the ZipFinder.hta file inside the
ZipFind folder. Double-click the shortcut to find zip code and area code information.
View picture of ZipFinder
Download zcodes.zip (400 KB)
(Note to scripters/programmers: ZipFinder is designed to be an easy-to-use utility,
but it also constitutes a sample program demonstrating the use of MSI files as SQL
databases. The download comes with a copy of a VBScript class for working with MSI SQL functions, and it
includes a copy of the script that was used to create the zip code database.)
Back to Index
Script to Edit MSI Files: Change installer window appearance and add information
This is a single VBScript that can do two things:
1) Change the background picture in an MSI installer "welcome dialogue" window.
(The window that shows first when you install software from an MSI file.)
2) Add custom notes and a list of file versions to the welcome dialogue window of an MSI file.
Adding custom notes provides a way to conveniently
store installation information in an MSI file. For example, you might save information about date installed,
or info. about problems you had with incompatible programs,
or the URL of drivers that you'll need when you install this package,
etc.
What the custom notes function does is to first add a scrolling text box (actually a "RichEdit" control)
to the upper left of an installer's "Welcome dialogue" or splash screen window (provided that the installer
includes a "welcome dialogue"). It then provides an
option to permanently store your custom notes text in the text window. Third, it searches the MSI
for files with version numbers, such as EXE and DLL files. Then it adds a list
of those files, along with their version numbers, to the same RichEdit text window.
The result is that when you open the MSI file later, the first window shown will
contain any notes that you chose to save, and you will have the opportunity
to check what versions of which system files the installer is likely to change on your system.
In other words, the text window serves as your own, custom "README" file, built into
the installer itself.
Download msiops2.zip (6 KB)
Back to Index
MSI-SQL VBScript Class with Documentation
The MBase MSI Editor and the ZipFinder utility both come with a VBScript class
for working with MSI databases. This download is that class plus documentation
about how to use it.
The MBase class provides a number of functions for working with
MSI databases. It provides several functions specific to MSI, and it also provides
a number of SQL-related functions. With the MBase class there is no need to construct SQL query strings.
Instead, the SQL calls can be made like standard Windows API functions. For example,
the function:
GetSelectValues(TableName, ColumnName, ColumnToCompare, ValueToCompare)
will return an array of all values in a given table column, where the value in
ColumnToCompare
matches
ValueToCompare. In other words, the MBase class lets you use the basic functionality of an
MSI database without needing to learn SQL query language, and without having to fiddle around with the tedium of composing
query strings with compound nested quotes.
Download clsmbase.zip (34 KB)
Back to Index
A Note of Caution Regarding IE7 and Vista
Internet Explorer 7:
The MSI tools here use Internet Explorer windows, combined with VBScript and the IE Document Object Model, to provide
their program interfaces. These downloads may or may not be fully compatible with so-called "Internet Explorer 7", due to
HTML/CSS rendering changes in IE7 and/or excessive security "features" in IE7.
IE7 has very limited usability. Only able to install on Windows XP SP2 or later Windows versions, it is really more of an
XP patch than a new version of IE. IE7 also has a poor reputation
in terms of webpage rendering and web standards compatibility. For those reasons there are no plans to update - or even to test - the code
here for IE7 compatibility. We recommend not installing IE7 in the first place.
See here for further information.
Windows Vista:
The free components from JSWare are not supported on Windows Vista. The vast compatibility issues
and problematic "permission" restrictions on Vista would be likely to result in many people needing
help to use these components successfully. Since the components are free, that scale of support
requests is simply not workable. In order to save time and trouble for all concerned, the JSWare free
components have been designed not to run on Vista. While the MSI utilities here are mainly HTA programs
that use HTML and VBScript, a specially-made JSWare component is used to extract installation files
from an MSI CAB file. That means that people using Windows Vista can use the MSI utilities but will
need to edit the code themselves in order to use a command-line ZIP program, in place of the
JSWare component, to unpack the CAB files that are part of any MSI installation package.
Back to Index
A Note to Non-Technical People
Some people may have arrived at this webpage because they want to just see inside
a .msi file, or want to know what the file extension .msi means. The short explanation of that is that
an MSI file is used to install Windows software. Some software comes in an EXE file. Some comes
in an MSI file. And sometimes it's an MSI inside an EXE.
A software installer file, whether MSI or EXE, generally contains all of the
files for the given software program. It also contains some method to copy those files out,
create shortcuts on the Start Menu, etc.
If you are here because you would like to inspect the contents of an MSI file
before installing, you probably want the
Basic MSI Unpacker. With that
you can simply drop your MSI file onto the .vbs file in the download and your MSI will be
unpacked.
What are "HTA webpage programs" and what do I do with the downloaded .zip file?
The downloads here are not "normal" software programs. They are actually
composed of webpages and/or script. (Script just refers to executable programming langauge that
is in the form of text rather than being compiled into an EXE file. Script is what allows webpages to be interactive.)
Some of these programs run in an Internet Explorer window. The method is
similar to the way that webpages online can be interactive. But a webpage offline, running on your
own PC, can do much more.
An HTA file is just a webpage file designed to run as an interactive program in
Internet Explorer. The fullscale MSI unpacker and the MBase MSI Editor (above) are both HTA
programs. They work in much the same way as a normal program, but they are actually composed
of webpage code (HTML/CSS) and script code (VBScript). Designing the programs that way
is easier than creating a "normal" program with an EXE file. Using an HTA also means that everyone
can read and edit the code that actually makes the program work. So people who know how to script can
add their own functions or changes to the code. At the same time, a "webpage program" is not necessarily
limited in its functionality. The MBase MSI Editor (above) is comparable in functionality to
the "official" Microsoft MSI editor, named
Orca. (The big difference is that with the
MBase MSI editor you don't have to register with Microsoft, download gigantic chunks of the Windows SDK, or
allow the installation of Microsoft's WGA spyware in order to get the program.)
The downloads here do not install like a typical program. Rather, each download is a ZIP file
containing a compressed folder full of files. To use the downloads, open the .zip file and take out the
main folder. (On Windows XP you can just double-click the ZIP file and then drag out the enclosed folder. On other Windows versions you will
need a ZIP program.) Each download has an information .txt file in the main folder that provides
basic instructions.
"Yikes! Norton says these files might be dangerous!"
Yes. You might get a security warning from anti-virus software when you
use the downloads here. VBScript and HTA files are mainly used by network administrators,
programmers, etc. The average PC user does not know about them. At the same time, anti-virus
programs are fairly simple and "dimwitted", on the lookout for "unlikely" behavior. Therefore, some anti-virus programs
have been designed to be suspicious when
any .hta
or .vbs file runs, on the presumption that it might be a virus file downloaded in email. If you see a warning
from anti-virus programs you will need to select the option to "Allow this script to run."
Back to Index