If you’ve been trying to update using LiveUpdate, you may have received the dreaded LU1812 errors when attempting to download Norton Antivirus and Symantec Common Client upgrades. I say dreaded as Symantec’s bogus solution to this problem is to uninstall and reinstall the software. This takes too long for my tastes (although I tried it three times unsucessfully.) And since the automatons in Symantec support were consitutionally incapable of offering any real assistance, I decided to fix it myself.
My first attempts were to decompose the update packages that LiveUpdate downloads. They are in RAR format. Each one contains a batch file with the extension .DIS. If you look inside one, you see that most of the update packages do something like the following:
- Check the version of the software running on the machine using Chckver.exe using a file called Chckver.ini or some variation of it.
- Run spa.exe against the patch file, usually patch.spa, which presumably patches the software
- Run chngever.exe against a file called chngever.inito update the software versions in the registry and some super-secret Symantec registry.
- Run LUProdRg.exe against a file called sr.ini that I suspect updates the LiveUpdate product registry.
Since this looked simple enough, I tried extracting the update package to a temporary directory and running each command line manually. It seemed to work, as checking the Common Client dlls and exes showed that the version numbers had changed. Unfortunately, LiveUpdate didn’t seem to recognize that the update had already run and continues to unsucessfully run the the same update.
So, the manual solution doesn’t seem to to work too well for my purposes. Then I remembered reading something about uninstalling the software, turning on dos-style 8.3 names, and reinstalling. The problem with this is that it doesn’t really work, as if any path needed by LiveUpdate is pre-existing, it won’t be assigned an 8.3 name in the process of reinstalling. For example, if “Documents and Settings” doesn’t already have an 8.3 name, the turning on 8.3 names in the registry isn’t going to set an 8.3 name for you – the setting only applies to new files and directories, all the existing stuff is unchanged
However XP has a way to set an 8.3 name to a file or directory after the fact. To do it, you use a program called ‘fsutil.exe’ It should already be installed on your system. Running it opens a variety of disk and file operations. The utility is very easy to use as it always explains itself. Running fsutil alone gets you the following:
behavior         Control file system behavior
Â
dirty            Manage volume dirty bit
file             File specific commands
fsinfo           File system information
hardlink         Hardlink management
objectid         Object ID management
quota            Quota management
reparsepoint     Reparse point management
sparse           Sparse file control
usn              USN management
volume           Volume management
Running ‘fsutil file:’
findbysid          Find a file by security identifier
queryallocranges     Query the allocated ranges for a file
setshortname         Set the short name for a file
setvaliddata        Set the valid data length for a file
setzerodata         Set the zero data for a file
createnew            Creates a new file of a specified size
Notice the option in italics, ‘setshortname.’ This option allows you to set an 8.3 short name to an existing file or directory. The complete command is ‘fsutil file setshortname [LongFileName] [ShortFileName]
The issue with LiveUpdate is that it doesn’t deal with long file names. So, if you set every directory it might need with an 8.3 file name, it will be able to construct a working path to the update package and will update sucessfully. This means that every directory in the path “c:\Document and Settings\All Users\Application Data\Symantec\Live Update” will need an 8.3 name. So, the fix is to run the fsutil command described above on each directory in the path. You will also need to do this for all the Norton stuff in you ‘Program Files’ directories. For each directory, do a listing using ‘dir /x’ to show you whether 8.3 names are already set, if they aren’t, use the fsutil utility to set a name.
Once you do this, LiveUpdate will run sucessfully.
Post a Comment