Настройка Wix, над которой я работаю, спрашивает пользователя, следует ли установить ярлык из основной программы на рабочий стол.
Проблема в том, что во время обновления ярлык удаляется, а затем создается заново:
- Если пользователь переместил значок, он, вероятно, воссоздан в другом месте (следующее свободное место, начиная с верхнего левого угла).
- Если пользователь решил не создавать значок во время первоначальной установки, обновления с пользовательским интерфейсом не помнят, что флажок для создания значка должен быть «снят» по умолчанию, а автоматические обновления просто создают значок, хотя пользователь явно выбрал не иметь этот значок создан.
Есть ли простой способ правильно справиться с этой ситуацией?
Ниже приведена информация о моей настройке Wix:
Установка на машину
Пользователи выбирают установку ярлыка на рабочем столе с помощью флажка, добавленного в модифицированную версию «Выбрать пункт назначения»:
<Control Id="DesktopShortcutCheckBox" Type="CheckBox" X="20" Y="160" Width="290" Height="17" Property="INSTALLDESKTOPSHORTCUT" CheckBoxValue="[INSTALLDESKTOPSHORTCUT]" Text="!(loc.InstallDirDlgCreateDesktopShortcut)" />
В теге пользовательского интерфейса у меня инициализировано свойство:
<Property Id="INSTALLDESKTOPSHORTCUT" Value="1"/>
Это компонент для создания ярлыка с условием INSTALLDESKTOPSHORTCUT:
<Directory Id="DesktopFolder" Name="Desktop">
<Component Id="desktopconnecteurdts" Guid="a-real-guid-here">
<Condition>INSTALLDESKTOPSHORTCUT=1</Condition>
<Shortcut Id="desktopconnecteurdts" Name="DTS eXplorer" WorkingDirectory="ApplicationFolder" Icon="DTSeXplorer.exe" Target="[ApplicationFolder]\DTSeXplorer.exe" Advertise="no" />
</Component>
</Directory>
После запуска программа установки проверит, существует ли более старая версия, и удалит старую версию, если она будет найдена:
<Upgrade Id="$(var.UpgradeCode)">
<UpgradeVersion OnlyDetect="no"
Property="PREVIOUSVERSIONSINSTALLED"
Minimum="$(var.OldProductVersion)"
IncludeMinimum="yes"
Maximum="$(var.ProductVersion)"
IncludeMaximum="no"
RemoveFeatures="all" />
<UpgradeVersion OnlyDetect="yes" Property="PROJECT_DOWNGRADE"
Minimum="$(var.ProductVersion)" IncludeMinimum="no" />
</Upgrade>
Основная версия продукта не меняется, например, я обновляюсь с 1.6.8.12345 до 1.7.2.56789.
Спасибо !