2

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

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

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

提前致谢..

4

3 回答 3

2

到目前为止,官方的 Kinect SDK 是针对开发人员的。即使您可以检测到 SDK 的缺失,用户也必须先安装 Visual C# 2010 Express 版本,然后才能安装 Kinect SDK。这是安装 SDK 的要求之一。我个人认为它已经太复杂了。

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

于 2012-01-24T18:55:21.187 回答
1

这就是我在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 Runtime Redistributable 捆绑到您的安装程序中并在安装期间执行它,例如通过自定义操作。依赖这种方法我有两个问题:

  • 1.8 可再发行版约为 120 MB,“太漂亮了”。
  • 运行时可能会在安装后的某个时间以某种方式被删除或损坏。如果我在启动时没有进行此检查,我的应用程序将莫名其妙地崩溃(对于非专业用户)。
于 2014-03-06T18:24:43.710 回答
0

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

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

于 2013-03-19T16:10:31.630 回答