I have been struggling for several days to get the msi repair to fix corrupted/changed .dll/.exe files. I built both kinds of files with the /release link option, which is suppose to embed the checksum in its PE file header. I then tried all combinations with the following msi/InstallShield (Developer V7.02) properties: REINSTALLMODE, ReinstallModeText. "comus". I also manually set the file table attribute flag to 1024 for the .dll/.exe files. No matter what I do, if a file already exists in the INSTALLDIR for this product and its version is the same as what is being installed, it is not updated, even though its checksum is different. The same thing happens after it is installed and I replace it with a file of the same name and version, but different checksum. It is not repaired. I also noticed MSWI V2.0 supports what is called CRC checking when the property MSICHECKCRCS is set (I assume set means to set it value to "1"?). However, this does not seem to make any difference either.
Does anyone know how the checksum mechanism or CRC file checking is suppose to work and how I can use it to repair corrupted files?