了解 perUser 和 perMachine 的 keyPath 问题
understanding keyPath issue for both perUser and perMachine
WIX 3.10
我在网站上阅读了答案,但 none 似乎满足了我的好奇心,想了解 perUser 与 PerMachine 在 KeyPath
之间的区别
这是每个用户的部分
<Package Compressed="yes"
InstallerVersion="200"
Manufacturer="company name"
Description="tool name"
Comments="comments"
Platform="x64"
InstallScope="perUser"/>
所以我的目录层次结构是 (perUser)
<Directory Id="TARGETDIR" Name="SourceDir" >
<Directory Id="AppDataFolder" Name="AppDataFolder">
<Directory Id="INSTALLFOLDER" Name="Concept Attribute Editor" />
</Directory>
<Directory Id="ProgramMenuFolder">
<Directory Id="ConceptAttributeEditorShortcut"
Name="Concept Attribute Editor">
</Directory>
</Directory>
<Directory Id="DesktopFolder">
</Directory>
</Directory>
并且在构建时出现错误,指出组件具有每个用户和每个机器的数据以及每个机器的 keyPath。我怎么知道一个键路径是给机器还是给用户的?作为特定于 perUser 的 DirRef 的子项还不够吗?
示例:
<DirectoryRef Id="TARGETDIR">
<Component Id="cmp9E3CD94933B0EB4D8E119985E636EFAA" Guid="F8703A26-2332-4658-BF4C-5FD9B03D2CAB" KeyPath="yes" Win64="yes">
<RegistryKey ForceCreateOnInstall="yes" Key="CLSID\{5A9D8C50-28CA-44E7-BC56-D77949F016E8}\Implemented Categories\{62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}" Root="HKCU" />
</Component>
</DirectoryRef>
现在,当我删除 keyPath 时,它仍然抱怨 keyPath 冲突。任何想法或解释
关键路径不是每个机器或每个用户 "for",关键路径只是关键路径。此外,当您删除密钥路径时会收到错误消息,因为(我相信)WiX 使您成为默认密钥路径。
这些 user/machine ICE 测试的一般问题是它们是静态的,并且不知道安装最终是针对每个用户还是针对每台机器,所以即使它不会安装,您也会收到警告申请。通常有一些方法可以避免警告。
[这里有一个很好的答案,所以如果heavyd的回答有帮助,请给他点赞。
How do I fix WiX warning: Component 'X' has both per-user and per-machine data with an HKCU Registry KeyPath
]
一般问题是为特定用户安装的资源。它还与修复(和更新)相关,因为关键路径定义了将用于修复的资源,通过版本检查来检查更新,但这在这里不太相关。
如果您在每台计算机安装中将注册表项或文件安装到用户配置文件位置,则不会为任何其他用户安装该资源。也许使用快捷方式会提示修复,但不能保证(除非您明确设计为按需安装),这意味着已安装的产品可能对其他用户损坏 - 您在每台机器安装中拥有每个用户的数据,并且一些用户并不拥有一切,因为缺少文件或注册表项。由于 ICE 测试不知道每个用户安装实际上会发生,因此您会收到 HKCU 的错误。如果您打补丁或升级,情况可能会变得更糟,因为结果可能是未打补丁的文件。这就是为什么 ICE57 文档说:
"Mixing per-user and per-machine data in the same component could result in only partial installation of the component for some users in a multi-user environment"
如果您按机器安装,您将获得 multi-user 环境。 (可能有一些终端服务类型的设置受到影响,但我没有检查过。)
在您的情况下,将根目录更改为 HKMU 可能会修复警告,因为 HKMU 意味着每个用户的 HKCU 和每台机器的 HKCR。 ICE 测试不应该抱怨这一点。
WIX 3.10
我在网站上阅读了答案,但 none 似乎满足了我的好奇心,想了解 perUser 与 PerMachine 在 KeyPath
这是每个用户的部分
<Package Compressed="yes"
InstallerVersion="200"
Manufacturer="company name"
Description="tool name"
Comments="comments"
Platform="x64"
InstallScope="perUser"/>
所以我的目录层次结构是 (perUser)
<Directory Id="TARGETDIR" Name="SourceDir" >
<Directory Id="AppDataFolder" Name="AppDataFolder">
<Directory Id="INSTALLFOLDER" Name="Concept Attribute Editor" />
</Directory>
<Directory Id="ProgramMenuFolder">
<Directory Id="ConceptAttributeEditorShortcut"
Name="Concept Attribute Editor">
</Directory>
</Directory>
<Directory Id="DesktopFolder">
</Directory>
</Directory>
并且在构建时出现错误,指出组件具有每个用户和每个机器的数据以及每个机器的 keyPath。我怎么知道一个键路径是给机器还是给用户的?作为特定于 perUser 的 DirRef 的子项还不够吗?
示例:
<DirectoryRef Id="TARGETDIR">
<Component Id="cmp9E3CD94933B0EB4D8E119985E636EFAA" Guid="F8703A26-2332-4658-BF4C-5FD9B03D2CAB" KeyPath="yes" Win64="yes">
<RegistryKey ForceCreateOnInstall="yes" Key="CLSID\{5A9D8C50-28CA-44E7-BC56-D77949F016E8}\Implemented Categories\{62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}" Root="HKCU" />
</Component>
</DirectoryRef>
现在,当我删除 keyPath 时,它仍然抱怨 keyPath 冲突。任何想法或解释
关键路径不是每个机器或每个用户 "for",关键路径只是关键路径。此外,当您删除密钥路径时会收到错误消息,因为(我相信)WiX 使您成为默认密钥路径。
这些 user/machine ICE 测试的一般问题是它们是静态的,并且不知道安装最终是针对每个用户还是针对每台机器,所以即使它不会安装,您也会收到警告申请。通常有一些方法可以避免警告。
[这里有一个很好的答案,所以如果heavyd的回答有帮助,请给他点赞。 How do I fix WiX warning: Component 'X' has both per-user and per-machine data with an HKCU Registry KeyPath ]
一般问题是为特定用户安装的资源。它还与修复(和更新)相关,因为关键路径定义了将用于修复的资源,通过版本检查来检查更新,但这在这里不太相关。
如果您在每台计算机安装中将注册表项或文件安装到用户配置文件位置,则不会为任何其他用户安装该资源。也许使用快捷方式会提示修复,但不能保证(除非您明确设计为按需安装),这意味着已安装的产品可能对其他用户损坏 - 您在每台机器安装中拥有每个用户的数据,并且一些用户并不拥有一切,因为缺少文件或注册表项。由于 ICE 测试不知道每个用户安装实际上会发生,因此您会收到 HKCU 的错误。如果您打补丁或升级,情况可能会变得更糟,因为结果可能是未打补丁的文件。这就是为什么 ICE57 文档说:
"Mixing per-user and per-machine data in the same component could result in only partial installation of the component for some users in a multi-user environment"
如果您按机器安装,您将获得 multi-user 环境。 (可能有一些终端服务类型的设置受到影响,但我没有检查过。)
在您的情况下,将根目录更改为 HKMU 可能会修复警告,因为 HKMU 意味着每个用户的 HKCU 和每台机器的 HKCR。 ICE 测试不应该抱怨这一点。