When deploying Kinect apps, ensure the runtime, components and device are ready...

Sign in to queue

Description

The second post in our "Oh yeah, v1!" week is a logical next step from yesterday's post...

Now that the Kinect for Windows SDK is in a v1 state and we can start officially deploying Kinect for Windows SDK based applications, one of the things we're going to be facing is just that, deployment and setup issues. Rob Relyea has kicked off helping us with just that, providing suggestions and tips...

Kinect Apps – ensuring Kinect Runtime is installed

Kinect for Windows 1.0 enabled apps should ensure that the Kinect Runtime is installed wherever the app is installed.

[Note: Kinect for Windows 1.0's latest public preview is beta 2. Parts of this blog post may be applicable to beta 2, but is primarily focused on the final v1.0 version, coming February 1st. Since v1.0 is not yet released, information I give here may change when it does release. I also am filtering this information to ensure that I am not giving away details that we don't yet want to release.]

Guidelines

App installers should install its dependencies, including Kinect Runtime – CRITICAL

Kinect for Windows 1.0 will have a KinectRuntime-v1.0-Setup.exe that your app installer MUST chain install. In addition to installing Kinect specific software (drivers + runtime), KinectRuntime-v1.0-Setup.exe will ensure the following dependencies are installed:

  • VCRT x86 and/or x64
  • .NET 4 client profile (or later 4.x versions like .NET 4.5)
  • Microsoft Speech Runtime v11 x86 and/or x64
Running an app should provide a decent user experience if Kinect Runtime isn’t installed

...

Project Information URL: http://robrelyea.wordpress.com/2012/01/11/kinect-apps-ensuring-kinect-runtime-is-installed/

public partial class App : Application
    {
        protected override void OnStartup(StartupEventArgs e)
        {
            if (IsKinectRuntimeInstalled)
            {
                //go ahead and load the StartupUri as defined in App.xaml
                base.OnStartup(e);
            }
            else
            {
                MessageBox.Show(Assembly.GetExecutingAssembly().FullName + " is not able to excecute."
                + "An important dependency should have been installed by its setup program: Microsoft Kinect Runtime 1.0");
            }
        }

        public bool IsKinectRuntimeInstalled {
            get
            {
                bool isInstalled;
                try
                {
                    TestForKinectTypeLoadException();
                    isInstalled = true;
                }
                catch (FileNotFoundException)
                {
                    isInstalled = false;
                }
                return isInstalled;
            }
        }

        // This Microsoft.Kinect.dll based type, must be isolated in its own method
        // as the CLR will attempt to load the Microsoft.Kinect.dll assembly it when this method is executed.
        private void TestForKinectTypeLoadException()
        {
#pragma warning disable 219 //ignore the fact that status is unused code after this set.
            var status = KinectStatus.Disconnected;
#pragma warning restore 219
        }
    }

Contact Information:

The Discussion

  • User profile image
    moez

    great post !!

  • User profile image
    DrWave

    Maybe you can help. I have got all the VB samples for SDK1 on this site to run, but I cannot get Designer to load anything. It keeps complaining that Microsoft.Samples.Kinect.WpfViewers cannot be found so it obviously chokes on KinectColorViewer etc. For the life of me I cannot find Microsoft.Samples.Kinect.WpfViewers.dll anywhere on the computer. Is this the problem ? If so where do I get the dll from ? Thanks.

  • User profile image
    gduncan411

    @DrWave:That DLL should be able to be found in %KINECTSDK10_DIR%\samples\bin\ which in my case resolved to C:\Program Files\Microsoft SDKs\Kinect\v1.0\samples\bin\

  • User profile image
    DrWave

    Thanks. But no success. I did find the dll in a...... \bin subdirectory . I guess my problem is I don't know how the following line resolves ....mlns

    xlmns:my="clr-namespace:Microsoft.Samples.Kinect.WpfViewers;assembly=Microsoft.Samples.Kinect.WpfViewers"

    what exactly is in clr-namespace? Do I need to put in a more complete path ? I guess I will have to take the VB.NET tutorial for beginners ! Being good with VB6 is no help anymore.

  • User profile image
    gduncan411

    @DrWave: Check your references...

    I just grabbed the source and opened "KinectforWindowsSDKV1\3.Camera Fundamentals\CameraFundamentalsVB" and it loaded and complied for me fine. With the error you're getting I'd check your references.

    My references auto resolved to "C:\Users\Greg\Desktop\KinectforWindowsSDKV1\KinectforWindowsSDKV1\Dependencies\KinectWpfViewers\bin\Release\Microsoft.Samples.Kinect.WpfViewers.dll"

    To check references, I click on the "Show All" in the Solution Explorer toolbar and then expand References item. Make sure all appear the same, are not marked as unfound, etc.

    If your references are right, if VS can find the DLL via the references, you shouldn't have to touch the WPF at all

  • User profile image
    DrWave

    Hey Greg: Thanks for the tip. You are right - you have to go inside solution explorer, expand everythng, and click on "include in project" for these dll's. Then all is good.

  • User profile image
    Hari

    Thank you Greg. My problem was similar, I had everything references. Just that I had to use these dlls by 'using' in the c# code and now it works fine .

Add Your 2 Cents