1

我的第一个版本中有这个组件:

<ComponentGroup Id="ProgramMenuComponents" Directory="PROGRAMMENUFOLDER">
  <Component Id="ApplicationShortcut">
    <Shortcut Id="ApplicationStartMenuShortcut" Name="$(var.ProductName)" Icon="icon.ico" Description="$(var.ProductName)" Target="[InstallFolder]$(var.MyApp.TargetFileName)" WorkingDirectory="InstallFolder"/>
    <RemoveFolder Id="PROGRAMMENUFOLDER" On="uninstall"/>
    <RegistryValue Root="HKCU" Key="Software\MyCo\MyApp" Name="installed" Type="integer" Value="1" KeyPath="yes"/>
    <Shortcut Id="UninstallProduct" Name="Uninstall $(var.ProductName)" Target="[SystemFolder]msiexec.exe" Arguments="/x [ProductCode]" Description="Uninstalls $(var.ProductName)" />
  </Component>
</ComponentGroup>

UninstallProduct我在下一个版本中删除了该元素。现在当我安装第一个版本时,对第二个版本进行重大升级,然后卸载快捷方式仍然存在。如何确保在重大升级时将其删除(甚至在卸载之前)。计划进行重大升级afterInstallExecute(必须保持这种情况)。

<MajorUpgrade Schedule="afterInstallExecute"/>
4

1 回答 1

1

通过使用 RemoveFile 元素删除快捷方式来修复:

<ComponentGroup Id="ProgramMenuComponents" Directory="PROGRAMMENUFOLDER">
  <Component Id="ApplicationShortcut">
    <Shortcut Id="ApplicationStartMenuShortcut" Name="$(var.ProductName)" Icon="icon.ico" Description="$(var.ProductName)" Target="[INSTALLFOLDER]$(var.MyApp.TargetFileName)" WorkingDirectory="INSTALLFOLDER"/>
    <RemoveFile Id="RemoveOldUninstallShortcut" On="both" Name="[My shortcut file name].lnk" />
  </Component>
于 2013-11-16T04:59:57.557 回答