WiX не добавит установку реестра HKLM во время установки Windows 7

Обеспечьте быстрый доступ к другой функциональной документации путем добавления "СМ. ТАКЖЕ" строку к комментариям справки. Во-первых, необходимо включать название функции всеми заглавными буквами как первая строка комментария. Сделайте свой обычный материал заголовка комментария, затем поместите, СМ. ТАКЖЕ со списком разделенных запятой значений других связанных функций.

function y = transmog(x)
%TRANSMOG Transmogrifies a matrix X using reverse orthogonal eigenvectors
%
% Usage:
%   y = transmog(x)
%
% SEE ALSO
% UNTRANSMOG, TRANSMOG2

при вводе "справки transmog" в командной строке Вы будете видеть все комментарии в этом заголовке комментария с гиперссылками к заголовкам комментария для других перечисленных функций.

32
задан Peter Mortensen 20 December 2016 в 21:50
поделиться

3 ответа

Я понял, почему это происходит.

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

Программа все еще была зарегистрирована; его просто не было в 64-битной части реестра. Скомпилируйте его под платформу x64, внося необходимые изменения, чтобы сделать его для 64-битной системы (ProgramFileFolder становится ProgramFiles64Folder и т. Д.), И все будет в нужном месте.

33
ответ дан 27 November 2019 в 20:39
поделиться

There are some differences to how Windows 7 handles certain registry keys. Registry reflection was removed starting with Windows 7. I am not sure if this plays into what you're seeing here, but check out this link for more on that.

Also, if you're working with a 64-bit version of Windows 7 you might be able to dig down into some specifics by referring to the MSDN 64-bit Windows Programming Guide.

Furthermore, if you need to have different registry keys installed into different locations based on the Windows flavour (XP, Vista, 7, etc.) then this Stack Overflow question also has an answer for you.

5
ответ дан 27 November 2019 в 20:39
поделиться

Спасибо, что решили эту проблему за меня!

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

<Component Id="MyShellExtension64.dll" Guid="..." Win64="yes">
  <Condition>VersionNT64</Condition>
  <File
    Name="MyShellExtension64.dll"
    Source="MyShellExtension64.dll"
    KeyPath="yes"/>
  <RegistryValue
    Root="HKLM" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved"
    Name="{GUID}" Value="My Shell Extension" Type="string"/>
</Component>

Обратите внимание на Win64="yes", это все, что требуется для записи в 64-битную область реестра. Условие VersionNT64 присутствует для того, чтобы этот компонент был установлен только на x64 систему.

В моем случае это дает предупреждения ICE80, поскольку я хочу установить 64-битный компонент в 32-битную папку ProgramFilesFolder. Я с удовольствием игнорирую их, потому что мое основное приложение не x64, а только расширение оболочки, и я не хочу помещать расширение оболочки в отдельную специальную папку.

19
ответ дан 27 November 2019 в 20:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: