Hi all

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

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


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:

  1. Add them manually inside the InfoPath client (or the toolbox in VS.NET)
  2. 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.