Hi. I've successfully hacked the x64 Perfection 2400 installer to produce a fully functional Perfection 1200 driver that installs under the correct name and the correct place in the registry, and supports the scanner's Start Button. I thought I'd share my method here in case it works for your scanner too.
On the Epson EU website there's a
list of scanners for which Epson is providing x64 drivers. Choose one that sounds similar to your scanner, and download the x64 driver for that scanner from the Epson website.
Unzip the download. Some of the driver files are grouped by
Locale ID under the LIB folder. Check out the .inf and .sif files for your locale. The number in the filename is the Epson Scanner (ES) number, and you can find out which scanner an ES number represents by looking in the [Strings] section of a .inf file. Choose the ES number that represents the most similar scanner to yours. The files with this number are the ones that you're going to modify.
The most important thing to do is change the USB Product ID (PID) in the info files to the PID of your scanner. (You can find your scanner's PID by looking in the .inf file from its 32-bit Windows XP driver.) The PID must be replaced throughout each .inf and .sif file bearing the appropriate ES number. For example, I replaced the Perfection 2400's PID of 011B with the Perfection 1200's PID of 0104 in every .inf and .sif file bearing the Perfection 2400's ES number (which is 27).
You should now have an installer that works for your scanner but recognises it as a different scanner. If you want your scanner to show up under the correct name, then you've got more work to do.
One of the cabinet (.cab) files in the root folder is specific to your scanner. You should be able to tell which one from its name. You need to search for and replace the name of the scanner, not only in the .inf and .sif files, but also in the .hrd, .idx and .icm files inside your scanner's cabinet file.
Changing these files is tricky. First of all, you need to extract them from the cabinet file. Unlike the .inf and .sif files, these files are binaries, so care must be taken in editing them. (I'd be wary of changing the length of the scanner's name.) Some of the embedded text strings use single-byte character encoding, but some use double-byte character encoding, which makes it difficult to spot every instance of the name you're looking to replace.
After you've edited the files, you must put them back into a cabinet file of the same name. I did this using the MakeCAB tool from
Microsoft's Cabinet SDK. In order to do this I had to create a directive (.ddf) file for MakeCAB as described in the MakeCAB User's Guide:
CODE
.Set InfFileName=Per1200.inf;delete this file
.Set RptFileName=Per1200.rpt;delete this file
.Set DiskDirectoryTemplate=.
.Set CabinetNameTemplate=Per1200.cab
; Cabinet contents, in order:
Per1200.ds
ES0007.hrd
Per120_t.icm
Per120_r.icm
ES0007.idx
If you did all that correctly, you should now have an x64 driver that installs your scanner under the correct name. I actually went further than that, but it isn't necessary to do so:
I changed the ES number from 27 (Perfection 2400) to 07 (Perfection 1200) in the names of the .inf, .sif, .hrd and .idx files, and throughout the .inf, .sif, .idx, .icm and Setup.ini files. This ensures that the scanner is installed in the proper location in the registry.
I changed the names of the .icm, .ds and .cab files to reflect the name of my scanner, e.g. from Per2400.ds to Per1200.ds. Corresponding changes must be made inside the .hrd, .inf and .sif files.
I deleted the .inf, .sif and .cab files for other models of scanner, and removed their ES numbers from the [Support] section of Setup.ini.
I edited the .inf files to match the capabilities of my scanner. (For example, I removed references to buttons that my scanner doesn't possess, and changed the resolution from 2400 to 1200.)
I have attached my Perfection 1200 driver:
Click to view attachmentI wouldn't have been able to do this if not for the fact that Epson's code is actually quite well written. However, that didn't stop me from sending them the following message:
QUOTE
I am one of many Epson customers who feel let down by the company's decision not to support older hardware on newer versions of Windows. My Perfection 1200U scanner is still functioning perfectly but Epson's refusal to provide a driver meant that I was unable to use it with the x64 Edition of Windows XP.
Not to be deterred, I simply downloaded and modified the x64 driver for the Perfection 2400 to produce a fully functional Perfection 1200 driver. This took me one afternoon, which just goes to show how easy it would have been for your engineers to do.
If you like, I could e-mail my driver to you so that you could check it out and make it available on your website for all those other customers that have been left behind by Epson. That might help to counter the perception that Epson does not provide adequate support for its legacy products.
Epson replied:
QUOTE
In answer to your e-mail, EPSON does provide full support for all our products however we cannot guarantee that older units will be compatible with newer operating systems. When testing it was Fong [sic] that the Perfection 1200U would not correctly operate with the X64 bit version of Windows and this is why we have not released a driver for this and we will not support this scanner on the Windows X64 operating system.
Which is of course, b*ll*cks. My scanner now works perfectly on x64. Anyway, I hope that this is useful to someone.
Cheers,
Smoove