- Have a read of the "Build Steps"
section of the documentation.
I try to do a reasonable amount of validation of parameters
when a command is processed but some errors may be only detected
later when the generated VBSCRIPT is executed
(please have a look at the
"example of a build failure" section).
In general a VBSCRIPT failure is a probably caused by input you provided
(if not send me your script and the generated code and I'll fix the problem
- or tell you what you did wrong).
- Read my doco!
Read it again. If the problem is with a specific command or feature then re-read its documentation (slowly and carefully - follow hypertext links). If a command pay particular attention to any prerequisites and default parameters. A large percentage of the queries I get have already been documented by me (even down to the exact error message). I do get grumpy when this happens. The compiled help has a good search facility - use it. If the documentation is not clear and you can tell me how to improve it then tell me! I am always improving the documentation so check the online version. Be sure to also check out the "bugs" section.
- Check my Error Codes Section
If you have an error message of return or error code then you should check the "Error Codes" section of this manual.
- Check MAKEMSI output for WARNINGS
If you get and "WARNING XXXX: type messages possibly due to redefining some values etc, don't ignore them, you should eliminate these first just to be sure...
- Check a command's parameters and documentation!
If you have never read the "command parameters" section of the documentation then do so now! Many commands have optional parameters but that doesn't mean they mightn't need to be supplied in some circumstances (its just that they are not always required). Sometimes you need to supply one of a number of optional parameters. If you are having problems with a specific command then re-read its documentation and examine any samples that MAKEMSI installs or documents.
- Build Logs and Other Files
I have put a lot of work into both the error messages and the files
that I build (and their location) in an attempt to make diagnosing
any issue much easier.
When I build a script such as "TESTMSI.MM" the "out" directory
will contain "TESTMSI.dbg.txt".
This file will show you everything you saw on the screen
(except under WIN9X) plus more, depending on debug options
(see "DBG_ALL") configuration,
you could even be able to see most of the Windows Installer table
and row manipulation, which is
handy for determining how a particular value could have got into a
particular place (you could also see the generated VBSCRIPT for this)!
The "OUT\TESTMSI.MM\LOG" directory tree has lots of files and
information which could easily help.
- Code Page Issues
If your problem is that MAKEMSI is not "seeing" some files then you
should have a look at the
"MAKEMSI_MM_CODEPAGE" environment variable to see
if you need to set it.
- Unexplained Intermittent Problems (strange write and delete errors)
These can quite easily be caused by programs such as virus checkers or anti-spyware tools (typically during a scheduled scan). The "X1.EXE" (Yahoo Desktop Search) tool is a great search program but its indexing really sucks, the fact that they fixed the same bug when I reported it in their previous search tool is particularly annoying. I normally terminate "x1" when building. The problem is that they can be opening the file while MAKEMSI or other programs are trying to create, write to, or delete the file. Unfortunately operating systems don't have inbuilt mechanisms to allow programs such as these to do their job.
- Double Check Validation and Filtering
It would be wise to have a closer look at any MSI validation messages you have been ignoring or if there were none have a look at the unfiltered output (which is kept). See if a message is listed in the "ICE Messages" section! If unsure I recommend looking in Microsoft's MSI forum for information on the specific message. It also might be a good idea to do a sanity check using "ORCA" to manually perform the validation (just in case).
- Norton's Malicious Script Detection
The "Norton's Malicious Script Detection" message might be seen while building an MSI and might also be seen if you are installing an MSI that makes use of the "JsCa" or "VbsCa" commands. - Silent Termination by AntiVirus or AntiSpyware Garbage
Its possible that the creation or updating of an MSI might fail in "strange" ways. Its worth testing for AntiVirus or AntiSpyware issues.
- MAKECAB.EXE - Diagnosis
If the compile step fails (or works) the "Cabinet"
log directory will contain a batch file which you can invoke
to test things out without having to do a possibly lengthy
rebuild.
MAKEMSI doesn't actually use this batch file but has created it
purely as a testing or problem diagnosis tool.
- MAKECAB.EXE - "Cannot open File" Message
A file in use (such as an Excel spreadsheet) can not be compressed
and MAKECAB.EXE will simply report that the file could not be
opened (no explanation).
See the "Files In Use - ADD" section for an example
which works around files on a share which may be in use by others.
- Check any Tweeks
If you tweek the way MAKEMSI
works and have just upgraded, does the tweek still work?
- Script Files must be ANSI
PPWIZARD (and therefore MAKEMSI) does not support the use
of non-ANSI formatted script or version files.
For example if the ".MM" file is in "unicode" then the make will
"complete" (almost immediately) without building the MSI.
If the ".MM" was OK but the ".ver" file is non-ANSI then you will
get an error message displaying a line which appears to
have spaces between each letter.
To correct use notepad or whatever text editor you are using
to resave the file as "ANSI".
Note that this is only the script related files we are
talking about, not files you may wish to add to the MSI
(these can be any format)!
- The "-IgnoreMeUnlessNotEmpty-.txt" file should be empty
If you are not getting the expected result its possible that
you have made a mistake which causes commands to get
generated in this file.
What goes in will usually give you an idea as to the source of
an error.
This file may contain spaces and/or blank lines but should not
contain anything else, if it does you probably haven't nested some
command properly or perhaps mixing unix and Windows end of line
characters.
- Lots Of, Huge or a Complex MSI
If you have large numbers of something or the size of some of your resources is big then you should check out the Install Site's "What are the limits for a large MSI package?" page.
- Merge Module Related Problems
There are few merge modules which either cause merge errors in pass 1 or cause validation errors or warnings (which may be safe to ignore). If unsure what you should do then I recommend looking in Microsoft's MSI forum for information on the specific merge module or the errors it generates.
It is probably worth while checking the
generated log files when trying to diagnose any issues.
- Directory Path too deep (name too long)?
Different file systems have different restrictions, NTFS has file
name limit of 255 characters.
Have you exceeded one of these limitations?
Try copying source to a simple directory off the root such as
"C:\tmp".
Its possible that some characters in the path/filename
may be the issue, for example "[" used to cause problems and this
would also be "fixed" by the above test.
If you do find a problem character please
let me know.
- If the problems are with the creation of cabinet files then see
the "Cabinet File Size Limitations" section.