Topic writing keyboard installers

We have two new locations for Keyman technical support:

The Tavultesoft Forums are now read only.


# writing keyboard installers   2007-11-20 15:27:48.080
Martin Hosken
I realise I could make a keyman package but what I would like to do is to create an nsis installer that can take a .kmx and install it in the right place for Keyman to pick up on it. Probably the best way to do this is to use the Keyman.exe to install it silently. Can you tell me the command line options to Keyman.exe?

What do I have to do for the various versions of Keyman that are out there (say from 6.0 up).

My main reason for doing this is to be able to install silently as part of another installer.

A secondary question is the ability to look at version information to ensure I don't install an older keyboard over a newer one. Is version information stored anywhere for a keyboard that I could interact with?

TIA,
GB,
Martin
# RE: writing keyboard installers   2007-11-20 21:29:57.143
Marc Durdin
Tavultesoft Staff
Hi Martin,

It's been a long time since I've heard from you!

You would want to use kmshell.exe to install a Keyman keyboard. For version 6.x, kmshell can be found in the path referred in HKLM\Software\Tavultesoft\Keyman\6.0\[root path]

For version 7.x, you can use kmshell.exe or the COM API. To find kmshell.exe, you will need to check: HKLM\Software\Tavultesoft\Keyman\7.0\[root path]

The KMSHELL command line to install a keyboard is:
kmshell -i "keyboardfilename" [-s]
Where [-s] can be provided for a mostly silent install. If a keyboard is already installed, the user will still be prompted as to whether they wish to upgrade even if the -s option is provided.

kmshell -u "keyboardfilename" [-s]
This can be used to uninstall a keyboard or package. You can use just the filename of the keyboard (you don't need to refer to a file that actually exists).

If installing on Vista, you need to take into account elevation so that keyboards and packages are installed for all users.

Preferably, for version 7.x, use the COM API. To install a keyboard with the COM API, have a look at:

* COMAPI docs
* Install Keyboard
* Install Package

When you use these functions, you also need to call the Apply function in order to tell all applications on the system that the new keyboard is installed.

Keyman Configuration (kmshell.exe) uses the COM API internally for all its communication with the Keyman Engine.

Last but not least - do consider distributing a kmp package and not a kmx anyway. The installation process is identical but a kmp has a number of advantages in what it can include:

* An on screen keyboard
* A welcome.htm introductory help file that is displayed when the keyboard is installed (unless -s is used); this welcome.htm is accessible at any time within the Keyman Desktop UI (right-click the Keyman icon, select "Active Keyboard Help" among other locations)
* Start menu shortcuts (for documentation, etc)
* Fonts (managed by Keyman for install and uninstall)

GB,

Marc Durdin
Tavultesoft Pty Ltd