========================
Win 7 Ultimate x64 SP1 Rus;
MS VS 2010 SP1 Rus;
AutoCAD 2009 x64 SP3 Enu;
(см. P.S. в конце топика)
========================
Средствами указанной IDE, на основе шаблона "Проект установки" написал инсталлятор для своей программы. В инсталляторе прописал проверку наличия на локальной машине указанной выше версии AutoCAD. Если искомый софт отсутствует - отказаться от инсталляции, сообщив пользователю о том, что нужная версия AutoCAD отсутствует.
Изначально я хотел проверять наличие раздела HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R17.2\ACAD-7001:409, а не HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R17.2\ACAD-7001:409 по вполне понятным причинам: текущий юзер мог ещё ни разу не запускать AutoCAD, в следствии чего в профиле пользователя отсутствовал бы проверяемый раздел.
Раздел HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R17.2\ACAD-7001:409 на компьютере присутствует:
В инсталляторе прописал следующее:
Условие запуска для указанного выше поиска выглядит так:
Компилирую инсталлятор и запускаю его - получаю сообщение, что на компьютере не установлен AutoCAD 2009.
Пробую искать в реестре другую запись, причём не из раздела HKEY_LOCAL_MACHINE, а из HKEY_CURRENT_USER, например такую:
Т.о. запись поиска будет выглядеть так:
Компилирую инсталлятор и запускаю его - запись в реестре прекрасно находится и процесс установки успешно происходит, но... Как я уже писал выше - проверять, установлен ли AutoCAD нужно в разделе HKEY_LOCAL_MACHINE, а не в HKEY_CURRENT_USER и объяснил почему.
Проверяю, будет ли найдена в ветке HKEY_LOCAL_MACHINE запись для другого, произвольно взятого приложения:
Ветка была успешно найдена и инсталлятор отработал как полагается.
Написал тестовое консольное приложение и в нём, через RegistryKey проверил, нет ли проблем с доступом к нужной мне записи AutoCAD в HKEY_LOCAL_MACHINE (хотя и так знаю, что нет, т.к. ранее это делал неоднократно) - запись прекрасно находится и считывается.
Вопрос: почему инсталлятор не находит запись для AutoCAD в ветке HKEY_LOCAL_MACHINE?
P.S. На работе проделывал аналогичные манипуляции с Win XP SP3 Rus x86; AutoCAD 2009 SP3 Enu x86; MS VS 2010; - результат такой же.
Примечание вдогонку - пишу код, и тестирую - с правами обычного пользователя. Т.о. все выше указанные операции выполняю как рядовой юзер (никаких особых дополнительных прав нет). Данный инсталлятор должен устанавливаться обычным пользователем с его урезанными правами (заказ нашего IT-отдела) - не хотят они его автоматом раскатывать всем юзерам домена, хотят, чтобы те сами себе его устанавливали, скачав из серверного репозитория.
Забыл показать ещё одну важную настройку, которую, тем не менее, так же устанавливаю под нужную платформу:
Не нашли то, что искали? Задайте вопросы в сообществе или поделитесь своими знаниями.