PDA

View Full Version : Error 1311: Source file not found <xyz>.cab



bmschkerke
24.09.2004, 03:13
Operating System: Windows XP Professional
Burning Software: Alcohol 120%
Anti-virus Software: Norton Antivirus 8.0
DAEMON Tools Version: 3.47

I recently reformatted and reloaded my home machine. After Windows XP was installed I proceeded to install a great number of older games and utilities that I use quite often.

During this process I ran into the error listed above, "Error 1311: Source file not found &lt;xyz>.cab". The first time I simply copied the files to my hard drive and installed from there. The second time I burned the files to a "real" CD and burned from there. The third time I got ticked off and decided I was going to hunt down this little problem.

Here's what I found: first, all three installs were using the Microsoft Windows Installer 1.1 or 2.0. This is critical. The Windows Installer software is actually a service that runs on your computer under the local SYSTEM account. You cannot (unfortunately) change the account that this service runs under.

On my fresh install of Windows XP the setting "Restrict access to CD-ROM drives to locally logged on users only" had somehow been set. This could be from my domain controller (although I've never turned that setting on) or it could be from one of the various compilers I installed (although I have no idea why they would do such a thing). I don't know how it get set -- but this is definitely the problem.

If you're logged on as BMSCHKERKE and try to install the software using an image on Daemon Tools using Windows Installer, Windows Installer tries to access the CD-ROM drive as the SYSTEM account which, because of the policy set above, isn't allowed. So Windows Installer gets denied access and throws up this mysterious error which seems to be a problem with the disc.

You fix it two ways: first is by using your Domain Controller's Security Policy Editor. On your domain controller click Start -> Programs -> Administrative Tools -> Domain Security Policy. From the tree that appears select Windows Settings -> Security Settings -> Local Policies -> Security Options. On the right hand side you'll see a listing of policies appear. Find and select "Restrict CD-ROM access to locally logged on user only." Double click it and set it to DISABLED. (Note: mine was set to undefined. This tells me that this isn't the culprit in actuality, but the registry setting this policy makes is the same I'm going to have you edit as the second method of fixing this problem, so it's better safe than sorry.)

Second way: click on Start -> Run -> regedt32 in the box -> OK.
From the list that appears on the left hand side of the screen expand My Computer -> HKEY_LOCAL_MACHINE -> SOFTWARE -> Microsoft -> Windows NT -> CurrentVersion -> Winlogon. After selecting Winlogon new options will appear on the right hand side of the screen. Find "allocatecdroms" and double click on it. This value should be 0. Not 1. The value on my fresh install of Windows XP Professional was 1.

The security policy for a machine is set at boot time / login time so you'll need to reboot your computer for either of these changes to take effect.

The funny thing is that Filemon and Regmon showed no applicable activity while these checks went on, which frustrated me greatly.

Why did the "real" CD I burned work? I haven't a clue. I'm not real interested in mucking around in the internals of Windows XP any more tonight to find out, either.

It is important to install from CD for many games because the games want the CD to be in the same drive they were installed from. This was the particular reason I decided to find and solve this problem.

I hope this is of help to someone here.