A while back I tried to focus more on converting entries from using DetectFiles to using Detects. There are a few advantages to this;
- Detecting registry entries is faster, especially on older/slower machines
- Registry entries are significantly more likely to be unchanged.
Using the registry to detect entries instead of files allows for more accurate detection, since non-default locations for the installed application wont affect it.
The slight drawback to using the registry to detect entries applies to people with custom install paths. In this instance, almost solely with entries that clean the %ProgramFiles%\ environment variable, the program will correctly detect and present the entry, however it will not clean.
With the next version of Winapp2.ini (as of the writing of this post), for example, I have changed Steam Games to be detected by the registry, while the FileKeys still point to the Program Files path of steam. Small blips like this can be corrected easily with reparse points. These are shortcuts, much like the ones on your desktop, that the system can follow.
If your Steam path was, for example, F:\Games\Steam, you can run the mklink command
mklink /d “C:\Program Files\Steam\” “F:\Games\Steam”

You can also run this from Command Prompt

The reparse point, located in Program Files, pointing to my steam directory on another drive.
Of course, you can replace F:\Games\Steam with wherever your Steam is installed. You can apply this to any program you have installed elsewhere, and will only have to do it once rather than re-write (or not use) certain winapp2.ini entries.
I have turned my focus for this version towards converting more entries to using Detect over DetectFile, and, as of the writing of this entry, have converted over eighty entries.