我有一个 permachine MSI 安装程序,我正在将其转换为将文件安装到 LocalAppDataFolder 的每个用户安装程序。
为了消除 ICE38 警告,我添加了一个注册表作为键路径。问题出在我的一个组件中,我有一个广告快捷方式和 ProgId。
我现在得到:
- ICE19 - “设置”通告组件:“CMP_Rapid”。无法公布此组件,因为 KeyPath 类型不允许它
- ICE19 - 快捷方式:“SHC_RunConfigExe”通告组件:“CMP_Rapid”。无法公布此组件,因为 KeyPath 类型不允许。
- ICE50 - 组件“CMP_Rapid”有一个公布的快捷方式,但找不到 KeyPath。
在安装到 LocalAppDataFolder 时,是否有在每个用户安装中做广告?我对广告不是很熟悉。在快捷方式上我使用它是因为我喜欢它提供的修复功能。我在 progId 上使用它是因为它会在安装后自动更新相应的图标。
我需要在 XP 和 Vista 上安装它,以便我可以使用 Windows 7 解决方案:ProgramFilesFolder 重定向。
下面是产生错误的组件:
<DirectoryRef Id="INSTALL_FOLDER">
<Component Id="CMP_Rapid"
Guid="{9373A11C-5A3C-49E3-963D-C19B765A4285}">
<File Id="FILE_Rapid"
Source="$(var.FilePath)\Dynagen Configurator.exe">
</File>
<Shortcut Id="SHC_RunConfigExe"
Name="DYNAGEN Configurator"
Description="Opens DYNAGEN Configurator application."
Directory="ConfigShortCutDir"
WorkingDirectory="INSTALL_FOLDER"
Icon="ICO_RunConfigExe.exe"
Advertise="yes"/>
<ProgId Id="Rapid.drcS" Icon="ICO_drcS.ico" Advertise="yes">
<Extension Id="settings">
<Verb Id="Open" Command="Open" Argument="/so "%1"" />
<Verb Id="Edit" Command="Edit" Argument="/edit "%1""/>
<Verb Id="Program" Command="Program" Argument="/program "%1""/>
</Extension>
</ProgId>
<RegistryValue Root="HKCU"
Key="Software\Dynagen\DynagenConfigurator"
Name="CMP_Rapid"
Type="integer"
Value="1"
KeyPath="yes"
/>
</Component>
</DirectoryRef>
最佳答案
事实证明,通过使注册表项的键路径错误来满足 ICE38。正确的做法是忽略 ICE38 错误,但进入 wix 属性页面并在“抑制特定的 ICE 验证”旁边添加 ICE38 和 ICE91。
Microsoft 或 Wix 对纯按用户安装没有理想的支持。我什至在网上找不到任何好的例子。
WiX-users@lists.sourceforge.net 的 Bryan 在这方面帮助了我:
Since that is the case, ICE38 is (in my opinion) incorrect and you will want to ignore it. ICE38 implies you are installing per-user resources in the context of a per-machine installation but never verifies that this is so.
Actually authoring a per-user install requires that you ignore ICE38 because it won't ever be accurate for that world.
一旦我忽略了上面的工作。
[编辑]
参见 my answer here以及。事实证明,您需要注意一些边缘情况。
关于wix - 是否可以为每个用户 MSI 提供广告快捷方式和 ProgId?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21490035/