Why does it happen?
When you push out a new .ini file to the UserDataCache, it contains the sections that you want to update. For example:
[DirectoriesENU]
FamilyTemplatePath={Your path here}
DataLibraryLocations={Your path here}
DefaultTemplate={Your path here}
in the [Install] section, you tell Revit to Update these sections every time a new or existing user logs in:
[Install]
Update=DirectoriesENU|FamilyTemplatePath;DirectoriesENU|DataLibraryLocations;DirectoriesENU|DefaultTemplate
The [Install] section is written into the user profile .ini along with the new values for each setting. This is what Revit reads when it starts up.
However, if those sections already exist in the [Install] section of the User Profile version, they're ignored.
This is because Revit compares the Update line in the User Profile .ini with the Update line in the UserDataCache. It doesn’t compare the values, because they're not in the line that's being compared. It's not ideal but it's what we have to work around.
How do you get around it?
As mentioned by Colin Manger (Kudos, Colin) earlier in this thread, you can push out a new update line of no importance into the [Install] section and overwrite the line. For example:
[Install]
Windows|Maximized
[Windows]
Maximized=1
The user opens Revit and the Window is maximised. Not what I'd call the crime of the century. From here on in, Revit remembers their window preference when they close the application, so it's a one-time inconvenience.
This effectively “cleans” the Update line, allowing you to push out a new one when you’re ready.
It ends up being a two-step process.