我的应用程序需要在用户机器上安装 Kinect SDK (http://www.microsoft.com/download/en/details.aspx?id=27876)。所以我需要验证机器上是否已经安装了 Kinect SDK。
如果没有,我希望安装程序向用户提供官方下载链接......
可能吗?如果是..我该怎么做?
提前致谢..
我的应用程序需要在用户机器上安装 Kinect SDK (http://www.microsoft.com/download/en/details.aspx?id=27876)。所以我需要验证机器上是否已经安装了 Kinect SDK。
如果没有,我希望安装程序向用户提供官方下载链接......
可能吗?如果是..我该怎么做?
提前致谢..
到目前为止,官方的 Kinect SDK 是针对开发人员的。即使您可以检测到 SDK 的缺失,用户也必须先安装 Visual C# 2010 Express 版本,然后才能安装 Kinect SDK。这是安装 SDK 的要求之一。我个人认为它已经太复杂了。
如 SDK 页面 ( http://www.microsoft.com/en-us/kinectforwindows/ ) 所述,在 2 月份这一切都将发生变化。我的猜测是微软正在发布 Kinect Runtime,以便用户可以安装它并运行 Kinect 应用程序(无需 Visual C#)。
这就是我在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 捆绑到您的安装程序中并在安装期间执行它,例如通过自定义操作。依赖这种方法我有两个问题:
可以让 ClickOnce 安装程序检测目标计算机是否安装了 Kinect 运行时(请注意,通常只需要运行时,而不需要完整的 SDK)。为此,您需要将 Kinect 运行时设置为应用程序的先决条件。
有关如何执行此操作的详细信息,请参阅https://bitbucket.org/malingo/kinect-runtime-bootstrapper 。