проблемы с установщиком MSI на Windows XP - PullRequest
2 голосов
/ 23 ноября 2011

Я ничего не понимаю о недавней проблеме, с которой я столкнулся при создании установщика MSI для 64-битной платформы Windows XP.

В состоянии запуска программы установки я пытаюсь прочитать данные из реестра, но программа установки не получает правильное значение. Я попытался проверить другое имя значения, чтобы убедиться, что это не только одно конкретное имя значения, и обнаружил, что оно ведет себя таким же образом.

Я попытался напечатать извлеченные данные о значении реестра в сообщении об ошибке и понял, что в некоторых случаях он вообще не получает значения, а в других случаях не удается получить любое число, которое является частью полных данных значения.

Например, если попробуйте прочитать данные для:

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework
  • Имя значения: InstallRoot
  • Значение данных: C:\Windows\Microsoft.NET\Framework64\

Данные, полученные установщиком: C:\Windows\Microsoft.NET\Framework\. А в некоторых других случаях он получает пустую строку.

1 Ответ

2 голосов
/ 23 ноября 2011

Поиски в реестре используют 32-разрядный куст реестра по умолчанию и 64-разрядный куст, только если установлен msidbLocatorType64bit флаг .

Таким образом, решение состоит в том, чтобы использовать 2 поиска с одинаковым свойством:

  • один для 32-битного улья
  • один для 64-битного улья (с флагом msidbLocatorType64bit)

Обратите внимание, что проекты установки Visual Studio не поддерживают это. Другие инструменты настройки установки делают.

...