我正在努力了解 Windows 资源管理器中用户固定的快捷方式与 Windows 安装程序的关系。我的印象是用户固定的快捷方式完全由用户处理,但似乎 Windows 安装程序会在删除安装程序快捷方式时找到(并修改)用户固定的快捷方式。
这基本上是两个相关的问题,一个与卸载的提前调度有关,一个与延迟调度有关,特别是版本之间从早期到晚期的变化。
升级后来自 msi 的缓存“内部”图标仍然有效
示例:应用程序 v1.0 在桌面上安装非广告快捷方式,并使用 msi 内部的图标。然后用户执行“固定到任务栏”。任务栏和桌面快捷方式现在都引用从 msi 复制到图标缓存中的图标,例如%SystemRoot%\Installer\{CB24D097-4E8F-4E8E-8FE3-EACF5954DE56}\MyApp.ico
. 应用程序通过重大升级升级到 v2.0,并计划延迟删除 v1。用户固定的快捷方式不会被损坏/删除,即使图标(大概?)仅属于 v1 安装程序,它也会保持相同的图标?为什么这行得通?是否存在将来删除缓存图标的风险,从而破坏用户固定的快捷方式?
提前安排卸载会损坏用户固定的快捷方式
如果使用早期卸载先前版本的主要升级将应用程序从 v1.0 升级到 v2.0 ,那么当应用程序(暂时)删除桌面上安装程序提供的快捷方式时,也会损坏用户固定的快捷方式。我发现的唯一解决方法(没有以编程方式将快捷方式恢复原位)是让安装程序根本不删除快捷方式,而是通过执行<RemoveFile on="uninstall">
快捷方式来删除 .lnk。(请参阅Wix - Do Not Remove Pinned Taskbar on Install)现在,这个 hack 对于一系列重大升级来说已经足够好了,这些升级都提前安排了卸载,如前几段所述 - 即使没有 hack,后期调度似乎也总是有效 -
但是,如果 v1.0 已经自带了后期卸载,而 v2.0 是第一次升级提前卸载之前的版本呢?
有什么办法可以影响 V2.0 msi 中 v1.0 的卸载?具体来说,我可以以某种方式说服 v1.0 卸载跳过删除快捷方式步骤吗?