I am going to take you through the steps to create a shareware product in Keyman Developer 7 Beta 1. Much of the user interface will change with Beta 2 and no doubt some of the steps will be restructured somewhat, but the concepts should remain fairly similar.
Before you start, make sure you have a keyboard, and a package with documentation and fonts. I won't cover any of that in this example. I am assuming that you are familiar with Keyman Developer 6 and Keyman 6.
A few things have changed from Keyman 6 with how Keyman is distributed. Keyman has been split into two components:
- Keyman Engine - installed in C:\Program Files\Common Files\Tavultesoft\Keyman Engine 7.0
- Keyman Desktop (formerly Keyman Standard Edition) - installed in C:\Program Files\Tavultesoft\Keyman 7.0
The Keyman Engine includes:
- keyman32.dll - The Keyman runtime keystroke processor
- kmcomapi.dll - Keyman's COM API interfaces
- keyman.exe - The tray icon application and background program.
Keyman Desktop includes:
- kmshell.exe - Keyman Configuration, Splash dialog and related
- keyman.pxx - Keyman product description file
- Help files and related files
The idea is that you can replace the files in Keyman Desktop with your own product files. You can choose to keep the Keyman Configuration user interface, or you can replace it entirely with your own interface. In this example we will replace the user interface entirely.
Step 1: start Keyman Developer 7 and create a new project. Add your keyboards and packages to the project.
Don't forget to compile your keyboards and packages. This will generate normal .kmx and .kmp files.
Step 2: Create a branding file
Step 2.1: Create your default task bar icon for the branding file.
Step 2.2: Setup the product options. This is where you specify the distribution model for the product
- Shareware: You define the length of the evaluation - there is no up-front licensing cost for Keyman, and you can start selling the product immediately through the Tavultesoft online store. The online store automatically manages the licensing for Keyman and product activation.
- Freeware: You purchase a license to distribute Keyman with your product as freeware to all users - at no cost to them. You cannot sell your product with this model but must make it freely available to all users. No product activation is included in a freeware product.
- Global: You purchase a license to distribute Keyman with your product and you have full control over how you manage the product. Product activation is not included in this model.
There is no need to change the controller file name in this example - we will use keyman.exe which is included in the Keyman Engine. Next, we setup the application command lines - Keyman's COM API uses this when another application needs to activate your keyboard:
You do not need to update any of the messages from Keyman Configuration if you are using your own user interface for the product.
Step 2.3: Design the notification icon popup menu:
Step 3.2: Then, add all the files for your product to the package. In this example, I have created a laounicode.exe .NET application that has a basic configuration dialog and splash screen. I will cover the making of that in another blog entry - for now, you can download it from the Beta downloads site:
I have unticked the "Include Standard Keyman Files" checkbox as we are not using the Keyman Configuration user interface.
Please note: a bug in beta 1 means that you need to add the redistributable file insthelp.exe into the installer if you do not include Standard Keyman files. insthelp.exe is available in the C:\Program Files\Tavultesoft\Keyman Developer\Redist folder.
Step 4: Finally, save your distribution file and click the Create Product button. You will need to be online to create the product. All going well, a .msi file will be generated in the same path as your .kpp file:
Candle and light are part of the WiX toolkit that we use for creating Windows Installer MSI files.
During this process, you will probably be asked for your tavultesoft.com login details. Keyman Developer requires access to online services from tavultesoft.com to encrypt your keyboard and setup product activation.
I will write about some other parts of the product creation process soon:
- Walkthrough the Tavultesoft Online product management website - product management, purchasing licenses, activating end user licenses and more.
- Dissecting the LaoUnicode.exe .NET example
Don't forget - if you encounter any bugs when following through this, create an issue!