Using the CorrectFilePathsUninstall Fix
Applies To: Windows 7, Windows Vista
This section includes information about using the CorrectFilePathsUninstall compatibility fix, including its usage and API-related information.
CorrectFilePathsUninstall
CorrectFilePathsUninstall fixes legacy issues whereby older versions of Installshield placed files in either the current user's portion of the file system or in the All Users portion. When uninstalling, Installshield would attempt to remove the files from the opposite location. The CorrectFilePathsUninstall compatibility fix maintains a list of path corrections, going through each location until it can successfully delete the specified file.
AllStartMenu -> UserStartMenu
AllDesktop -> UserDesktop
Note
This was not an issue on the Windows® 9x operating system, as it was single-user; however, this is a problem for any multi-user operating system.
Investigating the Issue
Application-related issues that can be resolved by applying the CorrectFilePathsUninstall compatibility fix are typically detected when an application is unable to uninstall files from the desktop or the Start Menu. You can use a monitoring program such as Process Monitor to determine which area of the file system is being searched by the uninstaller.
Intercepted APIs
The following table provides a list of APIs that are intercepted by the CorrectFilePathsUninstall fix.
API | Description |
---|---|
FindFirstFileA |
Attempts to call FindFirstFileA using corrected paths. If it succeeds, it returns a result. If it fails, then it tries the original path, and returns a result. |
GetFileAttributesA |
Attempts to call GetfileAttributesA using corrected paths, returning a result of success or failure. |
DeleteFileA |
Attempts to call DeleteFileA using corrected paths, returning a result. |
RemoveDirectoryA |
Attempts to call RemoveDirectorA using corrected paths, returning a result. After removing the directory, RemoveDirectoryA attempts to verify that the directory is removed using FindFirstFileA up to 500 times (with a Sleep(1) call between each) to ensure the removal. |
Fixing Your Code
If your application encounters this issue, we recommend that you repackage the installer because current versions of Installshield do not exhibit this behavior.