The other day I was given the task of updating an InfoPath template part that was in use on a laptop, because a newer version of this template part was available.
Upon opening the InfoPath client, I saw this:
There were two template parts, and in this case they are named “TemplateGroup1” and “TemplateGroup2”. I had a new version for the “TemplateGroup1” template part. I clicked on “Add or Remove Custom Controls” and got this screen:
As you can see, the “TemplateGroup1” does not show up, which I thought was weird. So, I tried clicking on “Add” to just add the new version of the “TemplateGroup1”, but that gave me this error:
The custom control, <TemplateGroup1> (urn:schemas-microsoft-com:office:infopath:templategroup1:-myxsd-2009-11-22t19-43-32), is already installed. Remove the existing custom control, and then try installing again.
So, I was at a loss… I couldn’t remove the existing version, and I couldn’t upload a new version.
Finally, I discovered what had happened. The user has an entry in the registry like this:
The key “IPCustomControlsFolder” is placed in the “HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\InfoPath\Designer” path of the registry. All template parts you put into this folder are automatically added to the controls of InfoPath.
So I found that path, and deleted the “TemplateGroup1” template part, and everything was fine.
So, what I now know is, that there are two ways of adding new template parts to be used by InfoPath:
- Add them manually inside the InfoPath client (or the toolbox in VS.NET)
- Add the right registry key to the registry, so you have a repository of template parts. This is especially useful for a repository on a shared network folder that can be used for all employees.
So if you ever have trouble removing a template parts from the custom controls section, look for the registry key.