I have fixed three bugs of msilib.FCICreate() 1. msilib.FCICreate("a.cab") creates ".a.cab" (extra leading dot) In recent cab SDK's FCI-FDI.doc, # quote start The szCab field should contain a string which contains the name of the first cabinet to be created (e.g. “APP1.CAB”). In the event of multiple cabinets being created, the GetNextCab function called by the FCIAddFile API allows subsequent cabinet names to be specified. The szCabPath field should contain the complete path of where to create the cabinet (e.g. “C:\MYFILES\”). # quote end Currently, _msi.c separate "C:\\MYFILES\\APP1.CAB" to szCabPath "C:" and szCab "\\MYFILES\\APP1.CAB". 2. Probably, "long names" error check doesn't count null-terminator now. 3. Usually, multibyte character may contain "\\" as trailing-byte. (like "ソ" in Japanese) Not to count this as path separator, I used CharNext(). Thank you.
Sorry, I lied. What I said in bug 2 was totally wrong. Meaning of 'i' was changed from original code and my patch. There is no problem about buffer length. Thank you.