Почему два ярлыка после крупного обновления (миграции)?

Мы используем 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. ссылка на старое имя файла теряется, когда вы переименовываете файл / ярлык. это причина, по которой старая ссылка не затрагивается и не перезаписывается установщиком.

Другие вопросы по тегам