2011-01-27 3 views
2

Можно ли найти версию установленного Silverlight (бывший 4.0.51204.0) и его папку установки (напр C: \ Program Files (x86) \ Microsoft Silverlight \ 4.0 .51204.0) в программе C#?Finding Silverlight версии и установка папки программно

Некоторые примечания:

  1. Не в Silverlight приложения, но откуда-то еще (например, в консольном приложении)
  2. Это не такая вещь, как HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Silverlight в моем машина.
+0

Целью является использование CSharpCodeProvider для компиляции dll с целью Silverlight из динамически генерируемого исходного кода –

ответ

2

Там должен быть ключ в реестре:

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Silverlight \ Версия

Папка установки всегда должна быть:

% ProgramFiles% \ Microsoft Silverlight

Вы также можете прочитать номер версии из файлов в этом каталоге (например, sllauncher.exe).

+0

Well , У меня есть чистая установка Windows 7 на моем ПК. Я установил SL4, и я могу заверить, что на моем компьютере нет такого ключа реестра! % ProgramFiles% может быть действительно полезным, но мне нужна точная и последняя версия SL. –

+2

Вы можете использовать «FileVersionInfo.GetVersionInfo()» в «% ProgramFiles% \ Microsoft Silverlight \ sllauncher.exe», а затем вы можете комбинировать «% ProgramFiles% \ Microsoft Silverlight» с этим номером версии, чтобы получить полный каталог. раздел реестра должен быть там, поэтому я бы использовал это только как резервную копию. – Flavio

+0

Хорошее решение, но оно скорее похоже на «взломать», чем стандартный метод получения чего-то такого рутинного. Или я единственный человек в мир, который пытается получить версию silverlight?:) –

0

Вы можете посетить official page Silverlight, чтобы проверить версию.
EDIT: Вы можете сделать это из консольного приложения. Просто загрузите веб-страницу в буфер и найдите номер версии с помощью регулярных выражений или простой обработки строк. См. here для примера того, как получить веб-страницу в буфере.

EDIT: См. this вопрос. Это может сработать для вас.

+0

Конечно, это не выполнимо «в консольном приложении» (см. Примечание 1 в моем вопросе) –

+0

Этот метод «выборки» работает только для статических страниц. Официальная страница Silverlight имеет перенаправление http плюс много контента динамического контента + silverlight. Я должен был бы написать полное приложение браузера, чтобы просто извлечь этот фрагмент текста. –

+0

Согласовано. Простите, пропустил этот момент. Отредактировано снова. :) – Yogesh

1

Среда выполнения Silverlight - это CLR, поэтому любой запущенный в ней .NET-код может использовать любой стандартный метод, доступный для него. В этом случае System.Environment.Version используется для получения версии CLR, в которой выполняется исполняемый код внутри, если вы используете это из приложения silverlight, вы получите версию Silverlight, которая будет работать на этом сервере

1

На 64-битном компьютере раздел реестра можно найти здесь: HKEY_LOCAL_MACHINE \ SOFTWARE \ WOW6432Node \ Microsoft \ Silverlight \ Version