У нас в программу встроен элемент управления Adobe Reader с помощью AcroPdfLib. Если не стоит Adobe Reader, конструктор формы падает с ошибкой. Хотелось бы реализовать такое поведение: если не установлен Adobe Reader, не открывать pdf-документ в нашей программе, а предложить пользователю, сохранить его. Еще лучшим вариантом было бы использование для отображения pdf-документов такой библиотеки, которая не требует установки чего бы то ни было, чтобы можно было просто положить сборку в дистрибутив - и всё работает.
Ответ
Проверка записи в реестре:
RegistryKey adobe = Registry.LocalMachine.OpenSubKey("Software").OpenSubKey("Adobe");
if (adobe != null)
{
RegistryKey acrobatReader = adobe.OpenSubKey("Acrobat Reader");
if (acrobatReader != null)
{
// TODO: ...
}
}
Проверка GUID для инсталлятора, если GUID известны:
bool installed = codes.Any(guid =>
{
var code = "{" + guid.ToString().ToUpper() + "}";
var state = MsiQueryProductState(code);
return state == 3 || state == 5);
});
Здесь codes - это guid для версий Acrobat Reader.
Варианты просмотра pdf-файлов на C# без установленного софта от Adobe:
View PDF files in C# using the Xpdf and muPDF library, Print PostScript
PDF Viewer Control Without Acrobat Reader Installed
Комментариев нет:
Отправить комментарий