MSI - Windows Installer - Code and Utilities


Index
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, see 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 have deliberately designed the MSDN2 site to malfunction in browsers other than IE, preventing the appearance of a scrollbar in Firefox while spilling the page text off the right side of the page. To circumvent the problem, select   View    ->   Page Style    ->   No Style   from the Firefox menu.
   (For those familiar with HTML and CSS, the cause of the problem can be demonstrated: Download any MSDN2 webpage. Near the top, find the STYLE block enclosed between the IE-specific tags <!--[if IE]> and <!--[endif]>. Remove those two tags, resave the file, and re-open it in Firefox.)

   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, unpack 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, 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 along with a documentation file 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 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 will 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. There may be issues with the slash vs backslash difference in Linux vs Windows file paths, among other things. First, to get the unpacker to run, the drag-drop code that sets the variable "Arg" must be set to a full .msi file path and the script needs to be edited to account for "/" vs "\" differences. But then the script still 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