Незначительное обновление WiX не удаляет старый ярлык

Были выполнены следующие шаги:

  1. Setup1.msi был построен в VS2005 + WiX 3.0 (.NET Framework 2.0).
  2. Версия 1.0.0.0 была установлена ​​программой Setup1.msi.
  3. Для незначительного обновления был собран Setup2.msi (Setup2.msi отличается от Setup1.msi ТОЛЬКО в ProductVersion = "1.0.1.0")
  4. Были подготовлены следующие файлы Patch.wx:

    <Patch
        AllowRemoval="no"
        Classification="Update"
        Comments="..."
        Description="..."
        DisplayName="..."
        Manufacturer="..."
        TargetProductName="...">
    
    <Media Id="1000" Cabinet="MyPatch.cab">
        <PatchBaseline Id="MyPatch" />
    </Media>
    
    <PatchFamily 
        Id="MyPatchFamily" 
        Version="1.0.1.0" 
        ProductCode="...THE SAME AS IN Setup1.msi..."            
        Supersede="yes">
    
        <ComponentRef Id="CMP_Program_EXE" />      
        <ComponentRef Id="CMP_Desktop_Shortcut" />      
        <ComponentRef Id="CMP_ProgramMenu_Shortcut" />
    </PatchFamily>
    </Patch>
    
  5. Patch.msp был создан с помощью свечи, света, факела и pyro.exe.

  6. Была вызвана следующая команда:

    msiexec /p Patch.msp REINSTALL=ALL REINSTALLMODE=vomus
    

    В результате был обновлен Program.exe и созданы новые ярлыки «v. 1.0.1». Однако старый ярлык «v. 1.0.0» остался как в «DesktopFolder», так и в «ProgramMenuFolder».

    Как я могу заставить патч удалить старый ярлык?
    Заранее благодарим.


person user536443    schedule 14.05.2012    source источник


Ответы (1)


Самый простой способ - не добавлять версию к имени ярлыка. См. Рекомендации по пользовательскому интерфейсу Windows:

Старайтесь не указывать номер версии в имени программы, если только пользователи не так обычно относятся к вашей программе.


В противном случае ваше незначительное обновление должно удалить ярлык для старой версии и создать новый ярлык, указывающий на новую версию.

При незначительном обновлении старая версия не удаляется, поэтому ярлык не обновляется.

person Alexey Ivanov    schedule 15.05.2012