Подтвердить что ты не робот

Как определить, установлен ли Runtime VSTO 2010?

Было легко проверить, был ли установлен VSTO 2005 SE, просто вызвав MsiGetProductInfo() с кодом продукта {388E4B09-3E71-4649-8921-F44A3A2954A7}, поскольку указанный в MSDN.

Что такое код продукта для среды выполнения VSTO 2010/4.0? Или есть лучший способ определить, уже ли он установлен? Это для нашего процесса установки.

Кроме того, я пытаюсь найти то же самое для компонент Windows Imaging.

4b9b3361

Ответ 1

Самый простой способ - проверить реестр.

HKLM\Microsoft\vsto установка времени выполнения \v4\Install

HKLM\Microsoft\vsto установка времени выполнения \v4R\VSTORFeature_CLR40 (это для расширений Office 4.0)

Ответ 2

К сожалению, ответы здесь до сих пор не совсем охватывают все базы.

Код продукта

Это не кажется надежным - мы ищем минимальную версию, а не конкретную версию. Несмотря на то, что код продукта теоретически допускает изменение только для увеличения основной версии, версия VSTO на моей машине - 10.0.40303 - имеет код продукта {A0FE0292-D3BE-3447-80F2-72E032A54875}. Это говорит о том, что Microsoft не обязательно сохраняет стабильность, поэтому я бы предложил, что это не очень хороший вариант.

Версия файла

Другим вариантом может быть проверка наличия/версии самих сборок VSTO, которая обычно может быть в% ПРОГРАММНЫХ ФАЙЛОВ%\Common Files\Microsoft Shared\VSTO\10.0. Однако я бы сказал, что этот каталог не гарантируется - фактический каталог, как представляется, указан в реестре, но, очевидно, это решение теперь не лучше, чем просто получить версию из реестра напрямую...

Реестр

Таким образом, переход к реестру, вероятно, единственный вариант.

К сожалению, версия времени исполнения VSTO может отображаться в любом из 4 мест реестра:

  • HKLM\SOFTWARE\Microsoft\VSTO Runtime Setup\v4 (32-разрядный, VSTO установлен из установки Office 2010)
  • HKLM\SOFTWARE\Microsoft\VSTO Runtime Setup\v4R (32-разрядный, VSTO установлен из распространяемого)
  • HKLM\SOFTWARE\Wow6432Node\Microsoft\VSTO Runtime Setup\v4 (64-разрядный, VSTO установлен из установки Office 2010)
  • HKLM\SOFTWARE\Wow6432Node\Microsoft\VSTO Runtime Setup\v4R (64-разрядный, VSTO установлен из распространяемого)

Примечание. У меня нет окончательного источника для этого - я собираю биты информации из, например, это сообщение в блоге Wouter van Vugt и этот ответ SO. Там может быть даже больше.

Кроме того, могут быть минимальные требования к версии, хотя я подозреваю, что на практике это повлияет только на людей, работающих с версиями до выпуска Office 2010:

В среде Visual Studio 2010 Tools for Office также поставляется с Microsoft Office 2010. Однако во время RTM Office 2010 среда выполнения с Office поддерживает только решения Office, предназначенные для .NET Framework 3.5. Если ваше решение нацелено на .NET Framework 3.5, он может запускаться либо при установке Office 2010, либо в Visual Studio 2010 Установлены инструменты для развертывания Office Runtime. Если ваш Решения Office нацелены на .NET Framework 4, вы должны перераспределить Visual Studio 2010 Tools for Office (цитата).

Ответ 3

Самый безопасный и чистый метод по-прежнему проверяет коды продуктов, вот они:

Для VSTO 2010 x86, версия 10.0.31124: {41A01180-D9FD-3428-9FD6-749F4C637CBF}

Для VSTO 2010 x64, версия 10.0.31124: {C3600AE6-93A0-3DB7-B7AA-45BD58F133B5}

Я получил их путем извлечения содержимого следующих пакетов с 7-Zip и анализа MSI с помощью Orca:

http://download.microsoft.com/download/F/3/9/F395E3C2-28A0-4F0D-9E20-FF4D1ADB08D8/vstor40_x86.exe

http://download.microsoft.com/download/F/3/9/F395E3C2-28A0-4F0D-9E20-FF4D1ADB08D8/vstor40_x64.exe

Ответ 4

Эти ключи зависят от установленной ОС. Я кропотливо установил автономные vsto и office 2010 и 2013.exe в x86 и x64. Чтобы использовать реестр, чтобы проверить, установлено ли vsto, вам необходимо проверить наличие следующих ключей:

для x64:

  • HKLM\SOFTWARE\Wow6432Node\Microsoft\VSTO Настройка времени выполнения \v4 → Установить

  • HKLM\SOFTWARE\Wow6432Node\Microsoft\VSTO Настройка времени выполнения \v4 → ProductCode

для x86:

  • HKLM\SOFTWARE\Microsoft\VSTO Настройка времени выполнения → InstallerPath

Изменить: то, что я на самом деле закончил, проверял, существует ли папка v4.

Ответ 5

Мне понадобился способ обнаружить это при развертывании Vstor в качестве приложения в SCCM 2012. Я использовал следующий PowerShell script для извлечения информации из WMI.

Если версия 10.0.50908, генерируется вывод. SCCM считает обнаружение успешным, если обнаружение script возвращает любое значение.

$VstorVersion = Get-WmiObject -Query "select ProductVersion from SMS_InstalledSoftware where ARPDisplayName = 'Microsoft Visual Studio 2010 Tools for Office Runtime (x64)'" -NameSpace "root\cimv2\sms"
if ($VstorVersion.ProductVersion -ge '10.0.50908') {Write-Host "Found"}

Ответ 6

Здесь код. В общедоступном методе мы определяем, установлен ли VSTO из пакета времени выполнения Office или VSTO. В личном методе проверьте, равна ли версия или больше версии VSTO2010

public static bool CheckVSTO2010 ( ) {
        string regFragment = IntPtr.Size == 8 ? "\\Wow6432Node\\" : "\\";
        string regVSTO = string.Format( @"SOFTWARE{0}Microsoft\VSTO Runtime Setup\", regFragment );
        return CheckVSTOVersion( regVSTO + "v4\\" ) || CheckVSTOVersion( regVSTO + "v4R\\" );
    }


    private static bool CheckVSTOVersion ( string keyPath ) {
        using (var key = Registry.LocalMachine.OpenSubKey( keyPath )) {
            //Not installed
            if (key == null) {
                return false;
            }
            var releaseKey = key.GetValue( "Version" );
            if (releaseKey != null && !string.IsNullOrEmpty( releaseKey.ToString() )) {
                var version = new Version( releaseKey.ToString() );
                return version.Major >= 10 && version.Build >= 40820;
            }
        }
        return false;
    }