Почему два ярлыка после крупного обновления (миграции)?
Мы используем WiX для установки Windows.
До недавнего времени мы поддерживали серьезное обновление без каких-либо проблем.
Меня попросили изменить имя ярлыка, когда мы изменили название нашего продукта. Так что я изменил это.
После серьезного обновления отображаются 2 ярлыка вместо одного.
Прелесть в том, что, пока мы устанавливаем все функции, перенесенные на одну и ту же машину, она удаляет старый ярлык должным образом.
Но когда мы устанавливаем одну из функций (функция веб-сервера) на (веб-сервер) машине, появляются 2 ярлыка.
Я убедился, что компонент ярлыка также добавлен в функцию веб-сервера.
<DirectoryRef Id="ProgramMenu.OrganizationName.MyProj">
<Component Id="CoreInterface_Shortcuts" Guid="3e3c3733-9b53-42cf-a641-b5b3e3da88cf">
<Shortcut Id="MyOrgMESUrl" Name="Home" Description="MyOrg Intuition URL" Target="[INSTALLDIR]MyOrg MES.url" WorkingDirectory="INSTALLDIR"/>
<RemoveFolder Id="RemProgramMenu.MyOrg" Directory="ProgramMenu.MyOrg" On="uninstall"/>
<RemoveFolder Id="RemProgramMenu.MyOrg.MyProj" Directory="ProgramMenu.MyOrg.MyProj" On="uninstall"/>
<RegistryValue Root="HKCU" Key="Software\MyOrg\MyProj" Name="installed" Type="integer" Value="1" KeyPath="yes"/>
</Component>
</DirectoryRef>
<Feature Id="WEBSERVER" Title="WEBSERVER Customized Component(s)" Level="1">
<ComponentRef Id="CoreInterface_Shortcuts"/>
</Feature>
Почему он поддерживает старый ярлык (если щелкнуть старый ярлык, он не работает)? Как этого избежать?
1 ответ
Причина проста. Вы не придерживаетесь лучших практик.
Когда вы меняете имена, вы должны изменить guid компонента.
см документацию:
Любые изменения, которые не были показаны тестированием на совместимость с предыдущими версиями компонента. В этом случае вы также должны изменить имя или целевое местоположение каждого ресурса в компоненте.
Изменение имени или целевого расположения любого файла, раздела реестра, ярлыка или другого ресурса в компоненте. В этом случае вы также должны изменить имя или целевое местоположение каждого ресурса в компоненте.
Добавление или удаление любого файла, раздела реестра, ярлыка или другого ресурса из компонента. В этом случае вы также должны изменить имя или целевое местоположение каждого ресурса в компоненте.
Изменение кода компонента (Windows)
Обновление только переустанавливает / перезаписывает файлы. исходные файлы и имена взяты из новой MSI. ссылка на старое имя файла теряется, когда вы переименовываете файл / ярлык. это причина, по которой старая ссылка не затрагивается и не перезаписывается установщиком.