Страницы

Поиск по вопросам

понедельник, 30 декабря 2019 г.

Как программно проверить наличие установленного Adobe Reader?

#c_sharp #pdf #com #windowsinstaller


У нас в программу встроен элемент управления Adobe Reader с помощью AcroPdfLib. Если
не стоит Adobe Reader, конструктор формы падает с ошибкой. Хотелось бы реализовать
такое поведение: если не установлен Adobe Reader, не открывать pdf-документ в нашей
программе, а предложить пользователю, сохранить его.
Еще лучшим вариантом было бы использование для отображения pdf-документов такой библиотеки,
которая не требует установки чего бы то ни было, чтобы можно было просто положить сборку
в дистрибутив - и всё работает.    


Ответы

Ответ 1



Проверка записи в реестре: 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.

Комментариев нет:

Отправить комментарий