gpt4 book ai didi

wix - 错误 LGHT0204 : ICE57: Component 'XXX' has both per-user data and a keypath that can be either per-user or per-machine

转载 作者:行者123 更新时间:2023-12-03 02:48:30 25 4
gpt4 key购买 nike

错误“错误 LGHT0204:ICE57:组件“XXX”同时具有每用户数据和可以是每用户或每台机器的 key 路径”是什么意思?
是否可以修复此错误?
无论如何,Wix 都会创建 msi 文件,并且可以安装该应用程序。这是真正的错误还是只是一个警告?如果这是一个警告,我可以忽略这个错误吗?或者应该纠正什么?
这是我的单包创作安装的 wxs 文件:

<?xml version='1.0' encoding='windows-1252'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
<Product Name='Foobar 1.0' Id='GUID' UpgradeCode='GUID'
Language='1033' Codepage='1252' Version='1.0.0' Manufacturer='Acme Ltd.'>

<Package Id='*' Keywords='Installer' Description="Acme's Foobar 1.0 Installer"
Comments='Foobar is a registered trademark of Acme Ltd.' Manufacturer='Acme Ltd.'
InstallerVersion='100' Languages='1033' Compressed='yes' SummaryCodepage='1252' />

<Property Id="ALLUSERS" Secure="yes" Value="2" />
<Property Id="MSIINSTALLPERUSER" Secure="yes" Value="1" />
<Property Id='ApplicationFolderName' Value="Acme" />
<Property Id='WixAppFolder' Value="WixPerUserFolder" />

<Media Id='1' Cabinet='Sample.cab' EmbedCab='yes' DiskPrompt="CD-ROM #1" />
<Property Id='DiskPrompt' Value="Acme's Foobar 1.0 Installation [1]" />

<Directory Id='TARGETDIR' Name='SourceDir'>
<Directory Id='ProgramFilesFolder' Name='PFiles'>
<Directory Id='Acme' Name='Acme'>
<Directory Id='INSTALLDIR' Name='Foobar 1.0'>
</Directory>
</Directory>
</Directory>

<Directory Id="ProgramMenuFolder" Name="Programs">
<Directory Id="ProgramMenuDir" Name="Foobar 1.0">
<Component Id="ProgramMenuDir" Guid="GUID">
<RemoveFolder Id='ProgramMenuDir' On='uninstall' />
<RegistryValue Root='HKMU' Key='Software\[Manufacturer]\[ProductName]' Type='string' Value='' KeyPath='yes' />
</Component>
</Directory>
</Directory>
</Directory>

<DirectoryRef Id="INSTALLDIR">
<Component Id='MainExecutable' Guid='GUID'>
<File Id='FoobarEXE' Name='FoobarAppl10.exe' DiskId='1' Source='FoobarAppl10.exe' >
<Shortcut Id="startmenuFoobar10" Directory="ProgramMenuDir" Name="Foobar 1.0" WorkingDirectory='INSTALLDIR' Icon="Foobar10.exe" IconIndex="0" />
</File>
<RegistryKey Root="HKMU" Key="Software\[Manufacturer]\[ProductName]">
<RegistryValue Name="FoobarEXE" Value="1" KeyPath="yes" Type="integer" />
</RegistryKey>
</Component>
</DirectoryRef>

<Feature Id='Complete' Title='Foobar 1.0' Description='The complete package.'
Display='expand' Level='1' ConfigurableDirectory='INSTALLDIR'>
<Feature Id='MainProgram' Title='Program' Description='The main executable.' Level='1'>
<ComponentRef Id='MainExecutable' />
<ComponentRef Id='ProgramMenuDir' />
</Feature>
</Feature>

<Icon Id="Foobar10.exe" SourceFile="FoobarAppl10.exe" />

</Product>
</Wix>

最佳答案

ICE57 检查的目的是验证组件没有混合每用户和每台计算机的文件和/或注册表设置。然而 Rob Mensching 在 http://sourceforge.net/p/wix/mailman/message/26687047/ 中的评论表明 ICE57 检查并不完美:

IIRC, this is a bug in ICE57. The Windows Installer team didn't look at ALLUSERS property when evaluating these values... that was a long time ago though so my memory may have decayed a bit.

您的示例在单包创作规则方面看起来是正确的。两个主要目标目录是 ProgramFilesFolderProgramMenuFolder,这两个目录都针对每个用户安装进行了适当的重定向。注册表项根是 HKMU,在每台计算机安装上最终为 HKLM,在每用户安装上最终为 HKCU。

这看起来像是 ICE57 中的一个错误。遗憾的是我们无法访问 ICE57 源代码,因此很难直接修复。有几个选项可以解决该问题:

选项 1 - 抑制 ICE57

不理想,因为它抑制了该组的所有四个规则,而不仅仅是失败的规则。

选项 2 - 使用广告的快捷方式

将您的快捷方式更改为广告,并丢失关联的注册表项。 MainExecutable 组件简化为:

   <Component Id='MainExecutable' Guid='GUID'>
<File Id='FoobarEXE' Name='FoobarAppl10.exe' DiskId='1'
Source='FoobarAppl10.exe' KeyPath='yes'>
<Shortcut Id="startmenuFoobar10"
Directory="ProgramMenuDir"
Name="Foobar 1.0"
WorkingDirectory='INSTALLDIR'
Icon="Foobar10.exe"
IconIndex="0"
Advertise='yes'/>
</File>
</Component>

ICE57 检查似乎通过广告中的捷径更可靠。

有关 ICE 检查的注意事项

所有 ICE 检查都存储在文件 darice.cub 中。这实际上是一个 Windows Installer 数据库文件,您可以使用 Orca 打开它。在典型的 WIX 安装中,可以在以下位置找到此文件:C:\Program Files (x86)\WiX Toolset vX.Y\bin。如果您在 Orca 中打开 darice.cub,您可以将 ICE 检查视为自定义操作。大多数是指文件中嵌入的一个或多个二进制 DLL。有一些是作为 VBS 实现的。

关于wix - 错误 LGHT0204 : ICE57: Component 'XXX' has both per-user data and a keypath that can be either per-user or per-machine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31211028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com