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.

See Also

Concepts

Windows Vista and Windows 7 Operating Systems