2012-01-16 3 views
2

Мое приложение требует Kinect SDK (http://www.microsoft.com/download/en/details.aspx?id=27876), установленного на компьютере пользователя. Поэтому мне нужно проверить, установлен ли Kinect SDK на машине.Добавить Kinect SDK как обязательное условие для моего приложения

Если нет, то я хочу, чтобы инсталлятор предлагает официальную ссылку для загрузки пользователя ...

Возможно ли это? Если это так .. как я могу это сделать?

Заранее спасибо ..

+0

Существует очень вероятный ключ реестра, который вы можете проверить, но я не уверен, где его найти. Возможно, GUID, который вы можете извлечь из установщика SDK? Но, как говорит Андрей ниже, вы, вероятно, захотите подождать, пока они не выпустят время исполнения. – Rup

ответ

2

До сих пор официальный Kinect SDK предназначен для разработчиков. Несмотря на то, что вы можете обнаружить отсутствие SDK, пользователь должен сначала установить версию Visual C# 2010 Express перед установкой Kinect SDK. Это одно из требований к установке SDK. Лично я думаю, что это уже слишком сложно.

Как упоминалось на странице SDK (http://www.microsoft.com/en-us/kinectforwindows/), в феврале все это изменится. Я предполагаю, что Microsoft выпускает Kinect Runtime, чтобы пользователи могли ее установить и запустить приложения Kinect (без необходимости использования Visual C#).

+0

Спасибо, что ответили, я подожду до февраля! –

0

Возможно, установщик ClickOnce обнаружил, установлен ли на целевой машине время выполнения Kinect (обратите внимание, что обычно требуется только время выполнения, а не полный SDK). Для этого вам необходимо установить рабочую среду Kinect в качестве предварительного условия для вашего приложения.

См. https://bitbucket.org/malingo/kinect-runtime-bootstrapper для получения более подробной информации о том, как это сделать.

1

Это, как я могу проверить для Kinect Время воспроизведения, в моих App.xaml.cs:

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(); 
    } 
    } 
} 

Вдохновленный this post.

Я использую Kinect SDK 1.8 и .NET 4.5.

Насколько я знаю, до версии 1.8 нет ключа для проверки.

Также возможно объединить Runtime Kinect Ristrime в ваш установщик и выполнить его во время установки, например. с помощью пользовательского действия. У меня есть две проблемы с использованием этого метода:

  • Распространяемый 1,8 ~ 120 МБ, «слишком beaucoup».
  • Среда выполнения может как-то удалиться или сломаться через некоторое время после установки. Если у меня нет этой проверки при запуске, мое приложение будет необъяснимо аварийно (для непрофессионала).