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

C# 将Kinect SDK作为先决条件添加到我的应用程序中,c#,kinect,prerequisites,C#,Kinect,Prerequisites,我的应用程序需要Kinect SDK(http://www.microsoft.com/download/en/details.aspx?id=27876)安装在用户计算机中。因此,我需要验证机器上是否已安装Kinect SDK 如果没有,我希望安装程序提供官方下载链接给用户 可能吗?如果是。。我怎么做 提前感谢。到目前为止,官方的Kinect SDK面向开发者。 即使您可以检测到缺少SDK,用户也必须在安装Kinect SDK之前先安装Visual C#2010 Express edition

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

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

可能吗?如果是。。我怎么做


提前感谢。

到目前为止,官方的Kinect SDK面向开发者。 即使您可以检测到缺少SDK,用户也必须在安装Kinect SDK之前先安装Visual C#2010 Express edition。这是安装SDK的要求之一。我个人认为这已经太复杂了


正如SDK页面()中提到的,在2月份,这一切都将改变。我的猜测是,Microsoft正在发布Kinect运行时,以便用户可以安装并运行Kinect应用程序(无需Visual C#)。

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


有关如何执行此操作的详细信息,请参阅。

这是我在我的App.xaml.cs中检查Kinect运行时的方式:

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运行时可再发行文件捆绑到安装程序中,并在安装过程中执行,例如通过自定义操作。依靠这种方法我有两个问题:

  • 1.8可再发行的容量约为120MB,“太小了。”
  • 运行时可能会在安装后的某个时间被删除或损坏。如果我在启动时没有这个检查,我的应用程序将莫名其妙地崩溃(对于非专业用户)

您很可能可以查看注册表项,但我不确定在哪里可以找到它。可能是可以从SDK安装程序中提取的GUID?但正如Andrei在下面所说的,您可能想等到他们发布运行时。谢谢您的回答,我会等到2月1日!