Должна ли установленная запись в реестре находиться в папке microsoft?

При добавлении ярлыка к установщику, созданному с помощью Wix, согласно Как: создать ярлык в меню "Пуск", вам необходимо добавить значение реестра следующим образом:

<RegistryValue Root="HKCU" Key="Software\Microsoft\MyApplicationName" Name="installed" Type="integer" Value="1" KeyPath="yes"/>

Должно ли это значение действительно находиться внутри Software\Microsoft? Во многих случаях в мире Microsoft я вижу поставщика, используемого в качестве прицела, поэтому мне интересно, действительно ли это должен быть Software\MyVendorName\MyApplicationName.

Возможно, это пережиток первых дней, когда WiX был проектом Microsoft. Другой отличный учебник по WiX см. WiXTutorial. Они кладут ключи так, как вы это делаете (Software\MyVendorName\MyApplicationName)

vre 11.04.2018 12:47

Привет пупено. Я добавил еще пару деталей, которые, возможно, могут иметь для вас значение. MSI очень сложен в деталях, но я не думаю, что эта конкретная проблема повлияет на вас (регистрация в COM). Приносим извинения за усложнение - возможно, без необходимости - но я добавляю больше деталей, чтобы ответ был более применимым и для других.

Stein Åsmul 11.04.2018 17:48
1
2
43
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я бы определенно написал на свое место, как указано другими:

  • HKCU\Software\MyVendorName\MyApplicationName
  • HKLM\Software\MyVendorName\MyApplicationName

В идеале ваше приложение не должно записывать больше нигде в реестре, кроме как под этими двумя родительскими местоположениями. Вы «являетесь владельцем» этих двух мест реестра - и больше нигде. Больше нигде писать не стоит - и уж точно не под ключом Microsoft. Я считаю, что это «общий образец».

Исключение составляют случаи, когда вам нужен зарегистрировать определенные файлы (или компоненты) - например, COM файлы, регистрация которого идет в HKLM\SOFTWARE\Classes и HKCU\SOFTWARE\Classes. Эти места для каждой машины и пользователя объединяются для создания HKCR (HKEY_CLASSES_ROOT). Регистрация COM также может быть изолированной, и в этом случае вы используете файлы манифеста - тогда реестр вообще не задействуется. WiX имеет специальные элементы, связанные с COM, которые будут заполнять реестр для вас с помощью стандартных механизмов MSI - инструмент heat.exe для сбора регистрации COM (среди прочего) автоматически сгенерирует эти элементы для вас, а ваш скомпилированный MSI будет иметь несколько таблиц MSI, сохраняющий регистрацию COM. информация (ProgId, Class, TypeLib и т. д.).

ОБНОВИТЬ: не слишком много компромиссов, но MSI может быть установлен для каждого пользователя или для каждой машины в зависимости от значений свойств ВСЕ ПОЛЬЗОВАТЕЛИ и MSIINSTALLPERUSER. Если вы заполнили правильные таблицы COM в MSI, сервер COM будет зарегистрирован для каждой машины или пользователя соответственно.

И есть другие случаи, когда процессы установки вносят изменения в другом месте реестра, если вы устанавливаете свой пакет. Например, когда вы устанавливаете водители, плагины, шрифты, COM +, COM-взаимодействие, расширения файлов и т.д ... Ваша регистрация в этих случаях обычно должна проходить через API-интерфейсы, которые заботятся о регистрации ваших компонентов, и вам не следует самостоятельно копаться в реестре. случаи. Многие из таких регистраций обрабатываются MSI, если вы делаете это правильно, или встроенными конструкциями в сторонних инструментах, используемых для создания файлов MSI.

Спасибо. Я сомневаюсь, что он будет принят, потому что Wix3 больше не находится в активной разработке, но я отправил запрос на перенос, чтобы изменить документацию Wix по этому вопросу: github.com/wixtoolset/wix3/pull/463

pupeno 12.04.2018 17:51

Другие вопросы по теме