我有一个 permachine MSI 安装程序,我正在将其转换为将文件安装到 LocalAppDataFolder 的每个用户安装程序。
为了摆脱 ICE38 警告,我添加了一个注册表作为键路径。问题出在我的一个组件中,我有一个广告快捷方式和 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>
最佳答案
结果证明通过使注册表项的键路径错误来满足 ICE38。正确的做法是忽略 ICE38 错误,而是进入 wix 属性页面并在“抑制特定的 ICE 验证”旁边添加 ICE38 和 ICE91。
Microsoft 或 Wix 对纯按用户安装没有理想的支持。我什至在网上找不到任何好的例子。
[email protected] 的 Bryan 帮助我解决了这个问题:
一旦我忽略了上述工作。
[编辑]
另请参见 my answer here。事实证明,您需要注意一些边缘情况。
关于wix - 是否可以为每个用户的 MSI 发布快捷方式和 ProgId?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21490035/