Windows Installer. как проверить существование ключа реестра

Общие вопросы, не зависящие от языка реализации.

Модераторы: Duncon, Eugie, Romeo, Hawk

Ответить
Redcat
Сообщения: 19
Зарегистрирован: 08 дек 2005, 18:48
Откуда: Russia

30 янв 2006, 09:27

Здравствуйте. Не подскажете, как можно проверить существование ключа реестра? Само значение ключа не важно.
Необходимо для Launch Condition в WindowsInstaller.

Как проверяется наличие файла на диске мне известно, но там сразу - условие существования (FILEEXISTS), а при добавления условия проверки на ключ реестра, в свойствах условия добавляется ещё и поле значения ключа. Оно нафиг мне не нужно, так как значение ключа, если он и существует, мне не известно. Нужно знать только сам факт существования. Потому, что если он существует, я знаю, что в системе есть определенная переменная среды, и я пользуюсь её значением для определения каталога установки по-умолчанию.

А вообще, вся каша заварилась для того, чтобы устанавливать файлы в директорию, путь к которой храниться в переменной среды. Но может сложиться так, что при установке этой переменной может еще и не быть в системе. Тогда мне надо прервать установку. Как решить проблему?
BBB
Сообщения: 1272
Зарегистрирован: 27 дек 2005, 13:37

30 янв 2006, 10:30

Redcat, Думаю, если нужная тебе переменная реестра не существует, то функция чтения переменной реестра вернет ошибку:

LONG RegQueryValueEx(
HKEY hKey, // handle to key
LPCTSTR lpValueName, // value name
LPDWORD lpReserved, // reserved
LPDWORD lpType, // type buffer
LPBYTE lpData, // data buffer
LPDWORD lpcbData // size of data buffer
);

Return Values
If the function succeeds, the return value is ERROR_SUCCESS.

If the function fails, the return value is a nonzero error code defined in Winerror.h.
Redcat
Сообщения: 19
Зарегистрирован: 08 дек 2005, 18:48
Откуда: Russia

30 янв 2006, 13:52

Да, но я создаю Setup в MS Visual Studio Setup Project. Там негде кодировать, все настраивается с помощью свойств. Я не знаю как это выполнить
Eugie
Сообщения: 707
Зарегистрирован: 17 фев 2004, 23:59
Откуда: SPb

30 янв 2006, 14:56

Tanatos
Сообщения: 2
Зарегистрирован: 31 июл 2007, 00:39
Откуда: Столица нашей необъятной
Контактная информация:

01 авг 2007, 00:56

По поводу
&quot писал(а):... как можно проверить существование ключа реестра?...
я только недавно всерьез начал изучать программирование. Начал с KiXtart - скриптового языка. так вот там есть функция:
KeyExist( )

Action: Checks for the existence of a registry subkey.

Syntax: KEYEXIST ("subkey")

Parameters: Subkey - Identifies the subkey you want to locate.

Returns: 1 Subkey found
0 Subkey not found
Надеюсь перевод не особо нужен? ;) скрипт займет строчек пять кода.
Впрочем, полагаю, практически в любом серьезном языке есть функции, позволяющие проверить наличие ключа реестра.
Ответить