Inno setup 有没有办法在应用程序更新期间保留固定图标?

Inno setup 有没有办法在应用程序更新期间保留固定图标?,inno-setup,Inno Setup,我已将Inno安装程序配置为在运行安装程序时卸载以前的应用程序版本。但是,这意味着将删除所有图标。当然,用户抱怨他们将我的程序固定在任务栏上,但程序更新后图标消失了。在更新之前卸载旧版本时,是否有办法使安装程序锁定图标,或者告诉安装程序保留主桌面或开始菜单图标 卸载是通过以下代码调用的,因此没有多少定制空间: Exec(sUnInstallString, '/SILENT /NORESTART /SUPPRESSMSGBOXES','', SW_HIDE, ewWaitUntilTerminat

我已将Inno安装程序配置为在运行安装程序时卸载以前的应用程序版本。但是,这意味着将删除所有图标。当然,用户抱怨他们将我的程序固定在任务栏上,但程序更新后图标消失了。在更新之前卸载旧版本时,是否有办法使安装程序锁定图标,或者告诉安装程序保留主桌面或开始菜单图标

卸载是通过以下代码调用的,因此没有多少定制空间:

Exec(sUnInstallString, '/SILENT /NORESTART /SUPPRESSMSGBOXES','', SW_HIDE, ewWaitUntilTerminated, iResultCode)

结果表明,Inno安装程序可以正确处理更新。我所要做的就是在安装新版本之前删除调用卸载程序的代码,然后我必须添加一个属性:

UsePreviousAppDir=yes

有关此主题的更多信息:

在安装新版本之前,通常不需要卸载旧版本,这就是为什么没有本机支持这样做的原因。您的卸载版本必须来自第三方,包括。。。文件我不知道有什么方法可以告诉windows,您将直接将文件放回原处,而不进行通常的清理。@Deanna:您应该在安装之前卸载,否则,如果旧版本有一些新版本没有的文件,此文件将变为悬空文件,并且永远不会被清理。@Deanna:找到了卸载旧版本的代码并添加到问题中。如何将应用程序固定到任务栏,如中所示。但是,这是一种黑客方式,而且在确定图标是否被锁定时也会被黑客攻击。如果旧版本有一些新版本没有的文件,则此文件将悬空,并且永远不会被清理。这就是[InstallDelete]的用途。“卸载”用于完全卸载,而不是删除多余的文件。不,您不需要显式地将指令值设置为“是”,因为它已经是默认值。@VioletGiraffe您确实不需要在升级之前取消安装应用程序。在升级过程中,您可以覆盖现有文件,如本地数据库、图标文件或其他文件,安装随附文件的新版本,如某些DLL或其他文件,或者如果这些文件不再使用且令您烦恼,则将其删除。不确定您确实要卸载哪些文件,但如果您想在此处发布这些文件,请这样做。没有任何进一步的信息,我只能说覆盖您现有的文件!在升级过程中。InnoSetup将自动执行该操作。@tMight:毫无疑问,它将覆盖文件。我担心有些文件可能会挂起,但事实证明InnoSetup可以正确处理所有文件。