我有一个permachine MSI安装程序,我正在转换为将用户文件安装到LocalAppDataFolder的每个用户安装程序。
为了摆脱ICE38警告,我添加了一个注册表作为keypath。问题出在我的一个组件中,我有一个广告的快捷方式和ProgId。
我现在要:
在安装到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>
答案 0 :(得分:1)
通过使密钥路径错误的注册表项来满足ICE38。正确的做法是忽略ICE38错误,但进入wix属性页面并在“抑制特定ICE验证”旁边添加ICE38和ICE91。
Microsoft或Wix对纯每用户安装没有理想的支持。我甚至无法在网上找到任何好的例子。
位于WiX-users@lists.sourceforge.net的Bryan帮助我解决了这个问题:
既然如此,ICE38(在我看来)是不正确的,你会想忽略它。 ICE38意味着您在每台计算机安装的上下文中安装每用户资源,但从未验证过是这样。
实际上,为每个用户安装创作需要您忽略ICE38,因为它对于那个世界来说是不准确的。
有一次我忽略了上述情况。
<强> [编辑] 强>
同样请参阅my answer here。事实证明,您需要注意一些边缘情况。