MSKLC and Vista? MSKLC and 64-bit? Darn, we're 0 for 2....

by Michael S. Kaplan, published on 2006/09/13 09:52 -04:00, original URI: http://blogs.msdn.com/b/michkap/archive/2006/09/13/752086.aspx


Remember that MVP I was talking about in this post and this one? Omi?

Well, he reported a few new issues he was running into with MSKLC in a couple of emails yesterday. :-)

One of them went like this:

Dear Michael,
I just installed Windows Vista RC-1 (64 bit) in my machine and
installed the attached keyboard layout. But this is not working and I
don't know why.

Can you please tell me what I need to do?

Thanks
Omi

And the other one went like this:

Here is a problem I found

--Error Code--

See the end of this message for details on invoking just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.UnauthorizedAccessException: Access to the path
'D:\Soft\Final\Bengali\ekushey_UniJoy\UniJoy.klc' is denied.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.File.Delete(String path)
   at Microsoft.Globalization.Tools.KeyboardLayoutCreator.KeyboardTextFile..ctor(String
fileName, String name, String description, String company, String
copyright, UIntPtr localeId, VirtualKey[] vks, ArrayList alNames,
ArrayList alExtNames, ArrayList alAttributes, ArrayList alDesciptions)
   at Microsoft.Globalization.Tools.KeyboardLayoutCreator.Keyboard.mnuFileSave_Click(Object
sender, EventArgs e)
   at Microsoft.Globalization.Tools.KeyboardLayoutCreator.Keyboard.Keyboard_Closing(Object
sender, CancelEventArgs e)
   at System.Windows.Forms.Form.OnClosing(CancelEventArgs e)
   at System.Windows.Forms.Form.WmClose(Message& m)
   at System.Windows.Forms.Form.WndProc(Message& m)
   at Microsoft.Globalization.Tools.KeyboardLayoutCreator.Keyboard.WndProc(Message&
m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32
msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.112 (rtmLHS.050727-1100)
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
msklc
    Assembly Version: 1.3.4022.0
    Win32 Version: 1.3.4022.0
    CodeBase: file:///C:/Program%20Files%20(x86)/Microsoft%20Keyboard%20Layout%20Creator/msklc.exe
----------------------------------------
System.Windows.Forms
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.112 (rtmLHS.050727-1100)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.112 (rtmLHS.050727-1100)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.112 (rtmLHS.050727-1100)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this application or computer (machine.config) must have the jitDebugging value set in the system.windows.forms section. The application must also be compiled with debugging enabled.

For example:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception will be sent to the JIT debugger registered on the computer rather than be handled by this dialog box.

--End Code--

Now both of these are indeed legitimate issues, and I thought maybe worthy of a comment here. :-)

The first one, I have even blogged about the problem in several other previous posts. It boils down to the fact that 64-bit support in MSKLC does not yet exist, and won't exist without some sort of update that explicitly addresses it.

The second one is a UAC/LUA issue with MSKLC that I have not mentioned before (in other words it is not this problem, which relates specifically to a UAC/LUA issue with installing keyboard layouts themselves.

The issue in this case is when you try to save a keyboard as a .KLC file over a copy that already exists when it sits in a location that requires administrative access to do the delete (the delete, and the save, are being done as MSKLC is being shut down). MSKLC, which has no knowledge of the need to elevate in this case, is failing on deleting the file to make room for the new one. It did verify it would be able to do so, etc. as far as it knew, but in Vista the circumstances changed a bit. Oops.

This second one is a (somewhat) known problem related to the general lack of knowledge that MSKLC has about its environment when it is running on Vista, though losing changes that have been made is a very bad thing here, and it is a pretty serious problem because of the effect of losing the changes. It is true that MSKLC is not quite as helpless on x86 Vista as it is on 64-bit Vista, but it is also true that there are many gotchas that are going to require an update to address....

I do not have a specific timeframe for such an update, but I can say that it is all being discussed and figured out. And I will not be shy about talking about it when (a) there is something to talk about and (b) I am allowed to do so. :-)

In the meantime, if you are interested in MSKLC and in perhaps testing out such an update aimed at Vista issues like either the ones in this post or this one or this one or this one or this one (or any other MSKLC under Vista or under 64-bit type of issue), then please feel free to send me a note via the Contacting Me... link. It won't be a list of people being contacted immediately, but it won't be forgotten, either. :-)

 

This post brought to you by (U+a026, a.k.a. YI SYLLABLE BOX)


# Michael Dunn_ on 14 Sep 2006 7:17 PM:

The ReplaceFile() API might come in handy when doing the save, no? That would remove the need to do separate delete and save steps, and if an error happens doing the replace, the app can detect it and save the data elsewhere.

# Michael S. Kaplan on 14 Sep 2006 8:31 PM:

Potentially, yes. Of course that is not happening now, and when fixing the work to do the elevate op will likely be the highest item on the list. :-)

# Omi on 17 Sep 2006 2:22 AM:

Michael,
I cannot say MSKLC doesn't work in Vista at all. It works in the testing window dramatically.

:)

Omi

# Michael S. Kaplan on 17 Sep 2006 3:11 AM:

Well, if you feel that is all you need then I shant argue the point. :-)

referenced by

2006/11/17 What happened on Thursday morning?

go to newer or older post, or back to index or month or day