So I'm building a deployment package for the world's most advanced collaboration platform (i.e. MOSS), and what do I get? An error because I am specifying a path+filename that is longer than 100 characters. Didn't we learn when we left 8.3 filenames behind that arbitrary limits like that cause nothing but pain?
I suspected that it was a make cab issue when it said that it couldn't find files in my ddf file, but it was files in the middle of my file list. I came across http://makemsi-manual.dennisbareis.com/makecab_exe_issues.htm which confirmed that there are filename length issues in makecab.
I looked more closely at my ddf file, and the breaking paths plus file names listed were more than 100 characters, while the ones that worked were shorter.
For example, I have a ddf directive that says copy the file listed to this other listed file (really just path changes) in the cab:
"..\TEMPLATE\CONTROLTEMPLATES\Com\Prj\SomethingAnalysisWorkflow-v1.0.0.0\MaintenancePreparationReadOnly.ascx" "CONTROLTEMPLATES\Com\Prj\SomethingAnalysisWorkflow-v1.0.0.0\MaintenancePreparationReadOnly.ascx"
Because the source filepath listed is longer than 100 characters, makecab throws an error.
There are two MakeCab's on my system:
C:\WINDOWS\system32\makecab.exe, 5.2.3790.0 (srv03_rtm.030324-2048), File Date: Wednesday, November 30, 2005, 7:00:00 AM
C:\Program Files\Microsoft Visual Studio 9.0\SmartDevices\SDK\SDKTools, no version but a digital signature. File date: Thursday, November 08, 2007, 8:19:22 AM
I made sure I was using the more recent one, but that didn't resolve this.
Since I am just over the 100 character limit, I can cheat by using the 8.3 filename for these files in the source file column in my ddf.
"Dir /X /W" gives you the 8.3 filename.
Yuck.
--Michael