将Kinect SDK作为先决条件添加到我的应用程序中

本文关键字:我的 应用程序 添加 先决条件 Kinect SDK | 更新日期: 2023-09-27 18:20:22

我的应用程序需要Kinect SDK(http://www.microsoft.com/download/en/details.aspx?id=27876)安装在用户计算机中。所以我需要验证Kinect SDK是否已经安装在机器上。

如果没有,我希望安装程序向用户提供官方下载链接。。。

有可能吗?如果是…我该怎么做?

提前谢谢。。

将Kinect SDK作为先决条件添加到我的应用程序中

到目前为止,官方Kinect SDK是面向开发者的。即使您可以检测到没有SDK,用户也必须先安装Visual C#2010速成版,然后才能安装Kinect SDK。这是安装SDK的要求之一。就我个人而言,我认为这已经太复杂了。

如SDK页面所述(http://www.microsoft.com/en-us/kinectforwindows/),在二月份,这一切都将改变。我的猜测是,微软正在发布Kinect Runtime,这样用户就可以安装它并运行Kinect应用程序(而不需要Visual C#)。

这就是我在App.xaml.cs:中检查Kinect Runtime的方法

using Microsoft.Kinect;
using System;
using System.Linq;
using System.Windows;
namespace WpfApplication {
  public partial class App : Application {
    protected override void OnStartup(StartupEventArgs e) {
      if (IsKinectRuntimeInstalled) {
        base.OnStartup(e);
      }
      else {
        MessageBoxResult result = MessageBox.Show("Microsoft Kinect Runtime 1.8 is required.'nClick '"OK'" to download Microsoft Kinect Runtime 1.8 from Microsoft's website.",
            "Kinect Runtime required",
            MessageBoxButton.OKCancel);
        if (result == MessageBoxResult.OK) {
          System.Diagnostics.Process.Start("http://www.microsoft.com/en-us/download/details.aspx?id=40277");
        }
      }
    }
    public bool IsKinectRuntimeInstalled {
      get {
        bool isInstalled;
        try {
          TestForKinectTypeLoadException();
          isInstalled = true;
        }
        catch (TypeInitializationException) {
          isInstalled = false;
        }
        return isInstalled;
      }
    }
    private void TestForKinectTypeLoadException() {
      KinectSensor kinectCheck = KinectSensor.KinectSensors.FirstOrDefault();
    }
  }
}

受此帖子启发。

我使用的是Kinect SDK 1.8和.NET 4.5。

据我所知,在1.8版本之前,没有注册表项可供检查。

也可以将Kinect Runtime Redistributable捆绑到安装程序中,并在安装过程中执行,例如通过自定义操作。依赖这种方法我有两个问题:

  • 1.8版本的可再发行空间约为120 MB,"太棒了"
  • 运行时可能会在安装后的某个时间以某种方式被删除或损坏。如果我在启动时没有这个检查,我的应用程序将莫名其妙地崩溃(对于外行用户来说)

可以让ClickOnce安装程序检测目标机器是否安装了Kinect运行时(注意,通常只需要运行时,而不需要完整的SDK)。为此,您需要将Kinect运行时设置为应用程序的先决条件。

请参阅https://bitbucket.org/malingo/kinect-runtime-bootstrapper有关如何执行此操作的详细信息。