I recently purchased the latest version of HelpStudio from Innovasys so that I could compile the Krypton help into the new format used by Visual Studio 2010. After a few teething problems it is now working as you can see below…
Visual Studio 2010 SP1
Note however that you need to have SP1 for Visual Studio 2010 as the SP1 includes an update to the Microsoft Helper Viewer that includes a standalone browser as shown above. This should not be a major issue as developers should be using the latest version anyway.
Another downside is that the installer has ballooned because it includes the extra help so now it is ~116MB instead of the ~67MB before. Given that a large chunk of the older size was the help build used for Visual Studio 2005/2008 and you can see that something like 90% of the total installer size is actually just help.
For those that are also using the HelpStudio product I can pass along a couple of tips. The output from the HelpStudio build is a .mshc file that contains all the help pages.
What is not obvious is that the .mshc file will not work directly if you want to perform a silent install. We don’t want to require the user to start the help manager and start browsing for the .mshc file so it can be installed into the help system. So instead we want to run a silent install at the end of the Krypton installer.
So you need to take the .mshc file and turn it into a cab file by using the makecab utility. Then you need to sign the cab file using the signtool utility. Pass this signed cab into the silent install and then your good to go.
Another gotcha is the Microsoft Help Viewer will not add a top level node for your help collection, which is what the older help system did, and so your table of contents in HelpStudio should have a single top level node and then everything else appears as a child of that.
Wednesday, January 19th, 2011
This is a maintenance release containing fixes for various Krypton Toolkit controls.
Of particular interest are crashes that have been fixed so that the Krypton components work under 64bit operating systems. Return values from some platform invoke calls were assumed to be 32bit when they were in fact 64bit. Check out the Toolkit change list document using the link below to see a full list of changes.
Toolkit Change List
Tuesday, September 14th, 2010
Our latest release includes three new components for the Toolkit. All of these are modal dialogs that are intended to replace your use of the existing message box, task dialog and input box forms. So now your dialogs can be consistent with the rest of the application by also using the Krypton palette styling.
The switch to using the KryptonMessageBox is very easy because you only need to perform a Find/Replace of the phrase MessageBox.Show with KryptonMessageBox.Show. This is because the exact same static Show methods have been used in the Krypton implementation as exist for the MessageBox which ensures an easy upgrade path. Check out the three new samples that can be accessed from the KryptonExplorer in order to see them working and experiment with the different settings that are possible.
Also present in this release is an important bug fix. Under Windows 7 the showing of a dialog that is derived from KryptonForm can fail. The bug is very nasty in that the dialog simply fails to be drawn on the screen, which is likely to be very confusing for your users. This has now been fixed. For a full list of changes you should check out the change lists that are installed.
Friday, September 10th, 2010
It’s not often I add something to make VB programmers happy, but today I have gone crazy and added a component called KryptonInputBox that is a Kryptonized version of the InputBox that VB.NET programmers take for granted. It is a very simple dialog box that allows the user to enter a string. There is little customization possible, you can only alter the window title, the user prompt and the default value that populates the text box.
You can use it in the following way…
string result = KryptonInputBox.Show("Prompt",
This results in the following appearance…
Don’t say I never do anything for the VB.NET community!
Wednesday, September 8th, 2010
Now that we have added a Kryptonized version of the MessageBox it seems reasonable to keep that theme going and add a Krypton version of the TaskDialog. For those not familiar with the TaskDialog it’s a feature added with Windows Vista and is essentially a MessageBox on steroids.
I would however point out that our Krypton version is not intended as an exact copy. It is very similar but it might not contain absolutely everything that is possible with the operating system version of the dialog. However, something is better than nothing and so here is what we have.
The most basic settings allow for a window title, main instructions, content details, associated icon and the specification of dialog buttons. You can omit any of these values in which case they will not be displayed. Here is an example of the dialog when they have all been specified with simple values…
You can optionally define a CheckBox that is presented in the same area as the dialog buttons. You can define the text for the control as well as the initial checked state. This is more useful than it might first appear. A common scenario is to present warning messages to the user, but ff the user finds these annoying the checkbox could be checked to indicate that the warnings should be suppressed in the future. Or maybe the checkbox is used to indicate that the selected option should always be used in the future without the need to ask again.
Additional information can be shown to the user in the footer area of the dialog. You can set an image, footer text and hyperlink text for this area or any combination of the three values. This is very useful if you want to allow additional help documentation or webpages to be shown in response to a hyperlink being pressed.
Use the radio button feature to present a multiple choice to the user. A simple collection property is used to specify the list of possible options and the selected value is available as a property on the KryptonTaskDialog class when the dialog has been removed.
This is similar to the radio buttons except the choices are presented as a set of buttons. Each button is assigned a DialogResult value and so on return from the dialog being dismissed you can check the return DialogResult to see which command was selected by the user.
As an extreme example you could even specify all the possible features and show the following…
…although I am not sure your users would appreciate such a monstrosity!