I think its most likely the GetTempPath function returning different paths (the Temp folder does change). On XP, the path was short enough that adding the length of the Guid and the folders names in the zip file stayed within the limit of the max path name (I think 256 characters?), while on W7 GetTempPath returned a longer name which pushed the resulting paths over the limit.
This assuming that the zip file actually does exist where the program thinks it is.