Я следовал учебному пособию здесь , чтобы реализовать ярлык удаления в меню Пуск.
Короче говоря, способ создания записи удаления заключается в следующем:
<Shortcut Id="UninstallProduct"
Name="Uninstall My Application"
Target="[SystemFolder]msiexec.exe"
Arguments="/x [ProductCode]"
Description="Uninstalls My Application" />
Основываясь на предложении Роба Меншинга здесь , если приложение достаточно маленькое и вам не нужно обрабатывать небольшие обновления и незначительные обновления (чего я не делаю), вы можете заставить каждое обновление быть серьезное обновление. Это показано здесь . Я использовал предложение Роба, которое было таким:
<Product Id="*" UpgradeCode="PUT-GUID-HERE" Version="$(var.ProductVersion)">
<Upgrade Id="PUT-GUID-HERE">
<UpgradeVersion OnlyDetect="yes" Minimum="$(var.ProductVersion)" Property="NEWERVERSIONDETECTED" IncludeMinimum="no" />
<UpgradeVersion OnlyDetect="no" Maximum="$(var.ProductVersion)" Property="OLDERVERSIONBEINGUPGRADED" IncludeMaximum="no" />
</Upgrade>
<InstallExecuteSequence>
<RemoveExistingProducts After="InstallInitialize" />
</InstallExecuteSequence>
Теперь мой вопрос: если идентификатор продукта рандомизирован (*), чтобы можно было провести серьезное обновление, есть ли другой способ добавить ярлык удаления в меню «Пуск» или мы должны сделать это через «Установка и удаление программ»? Я бы предпочел создать ярлык в меню «Пуск», так как он проще для пользователя. Очевидно, что так оно и есть сейчас, оно не будет работать, потому что [ProductCode], который используется в аргументах msiexec, будет меняться при каждой установке. Спасибо.