The pkg_mkIndex command will work as you say but the package will not be found in the bin directory unless you lappend that directory to the global variable auto_path prior to issuing the package require command.
Tcl will search through all of the auto_path directories plus one level deeper for packages.
For packages, I normally put them in one of two places.
If I want the package to be used in only one site I usually create a directory under the site tclprocs directory (I usually call mine lib) and place the package(s) and the pkgIndex file there.
If I want a package to apply to all sites in the root I normally create a directory under $HCIROOT/tcl/lib of the same name as the package. For example, Metakit. I then place the package and the pkgIndex file there.
I am well aware you can issue the pkg_mkIndex command from a Tcl shell. You can do the same thing with the auto_mkindex command to build a tclIndex but it is easier to use the mktclindex script provided.
I have modified the mktclindex script to do packages and named it mkpkgindex. The difference is, by default, it assumes files with suffix of .pkg as that is the suffix I put on my packages. Like mktclindex you can override the defau;t by passing a suffix like “*.tcl” or a complete file name like Metakit.dll when running the script.
I think I have uploaded the script before but here it is again. If on Unix, remove the .htc suffix and make sure the first line has the proper path. I would recommend the script be put under $HCIROOT/contrib so it is available anywhere within the root.
In this case, simply put the Metakit.dll file in a directory within your auto_path as described above and, from that directory, run the script like: mkpgkindex Metakit.dll