Вложенный ключ Wow6432Node в InstallShield - PullRequest
4 голосов
/ 13 ноября 2011

У меня есть проблема, когда после того, как мой проект InstallShield собран и я тестирую установку на чистой 64-битной машине с Windows 7, она создает ключ Wow6432Node в ключе Wow6432Node, когда я проверяю regedit в HKEY_LOCAL_MACHINE \ SOFTWARE.Все записывается правильно, и программа, кажется, работает нормально.Я удостоверился, что мой проект - тот, который вызывает это.Я не хочу оставлять все как есть, потому что было бы глупо иметь такой реестр.Кто-нибудь знает, что могло послужить причиной этого?Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.

Ответы [ 2 ]

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

Я видел эту проблему на моей работе. Если вы откроете свой проект Install Shield и посмотрите на компоненты, для некоторых из них свойство COM Extract at Build будет установлено в yes. Разверните этот компонент и посмотрите на файлы. Щелкните правой кнопкой мыши, чтобы просмотреть свойства. Если для файлов установлен флажок Self Register, это вызовет проблему, которую вы видите. Когда мы пошли и удалили COM Extract at Build из всех наших компонентов, у которых были файлы, самостоятельно регистрирующие проблему, проблема исчезла.

Когда вы устанавливаете ваш продукт на 64-битную машину, он вложит ключ wow6432node в реестр. На 32-битной машине он просто добавляет ключ wow6432node в реестр, который никогда не должен существовать на 32-битной машине.

Таким образом, чтобы прояснить проблему, проистекают из конкретных компонентов, для которых для свойства Com Extract at Build установлено значение yes, а для одного из файлов, содержащихся в этом компоненте, задана самостоятельная регистрация. Это создает wow6432node по ошибке. Ответить на ваш вопрос о том, почему вы видите вложенные ключи wow6432node, немного сложнее.

В вашем случае, я думаю, происходит то, что вы создаете распространяемый файл с проблемой wow6432node. Когда ваш основной установщик переходит к созданию необходимых ключей реестра, он проверяет, является ли машина 64-битной. Если это так, он помещает все под ключ wow6432node. Пока все работает, но потом приходит распространяемый, который содержит ошибку. Затем он устанавливает все в свой собственный ключ Wow6432node, который теперь содержится в основном установщике. Вы можете попробовать это проверить, установив приложение на 32-битную машину. После этого вы должны увидеть только 1 ключ wow6432node, а не вложенные ключи. Этот 1 ключ wow6432node создан по ошибке из-за проблемы, описанной выше, которая содержится в вашем распространяемом файле.

(отредактировано для уточнения)

1 голос
/ 14 ноября 2011

Для 64-разрядной системы вы можете создать одну 64-разрядную установку и установить Да для 64-разрядного свойства компонентов.

Или:

Disable( WOW64FSREDIRECTION );   

//... call register function

Enable( WOW64FSREDIRECTION );  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...