В WIX, как Вы создаете не рекламируемый ярлык в профиле allusers? До сих пор я только смог выполнить это с рекламируемыми ярлыками. Я предпочитаю нерекламируемые ярлыки, потому что можно перейти к свойствам ярлыка и использовать, "находят цель".
В учебных руководствах я видел, используют значение реестра для keypath ярлыка. Проблема, они используют HKCU в качестве корня. Когда HKCU используется, и другой пользователь удаляет программу (так как это установлено для всех пользователей), ключ реестра оставлен позади. Когда я использую HKMU в качестве корня, я получаю ошибку ICE57, но ключ удален, когда другой пользователь удаляет программу. Я, кажется, продвинут к использованию HKCU, хотя HKMU, кажется, ведет себя правильно (в расчете на пользователя по сравнению со все-пользователями).
Когда я пытаюсь создать не рекламируемый ярлык, я получаю различную ошибку ICE, такую как ICE38, ICE43 или ICE 57. Большинство статей, которые я видел, рекомендует, "просто игнорируют ледяные ошибки". Должен быть способ создать не рекламируемые ярлыки, не создавая ошибки ICE.
Отправьте пример кода для рабочего примера.
Взгляните на От MSI к WiX, часть 10 - Ярлыки , автор Алекс Шевчук.
Или сообщение в блоге Роба Менчинга Как создать ярлык для удаления (и пройти всю проверку ICE).
В основном ICE57 раздражает ... но вот код (кажется, работающий), который я использую для ярлыков на рабочем столе:)
<Component Id="DesktopShortcut" Directory="APPLICATIONFOLDER" Guid="*">
<RegistryValue Id="RegShortcutDesktop" Root="HKCU" Key="SOFTWARE\My App\1.0\settings" Name="DesktopSC" Value="1" Type="integer" KeyPath="yes" />
<Shortcut Id="desktopSc" Target="[APPLICATIONFOLDER]MyApp.exe" Directory="DesktopFolder" Name="My Applications" Icon="myapp.ico" IconIndex="0" WorkingDirectory="APPLICATIONFOLDER" Advertise="no"/>
<RemoveFolder Id="RemoveShortcutFolder" On="uninstall" />
<Condition>DT_SHORTCUT=1</Condition>
</Component>