【问题标题】:Is there a way to preserve the pinned icon during application update?有没有办法在应用程序更新期间保留固定图标?
【发布时间】:2014-09-26 18:45:00
【问题描述】:

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

使用以下代码调用卸载,因此那里没有太多自定义空间:

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

【问题讨论】:

  • 在安装新版本之前通常不需要卸载旧版本,这就是为什么没有原生支持这样做的原因。您的 UnInstallOldVersion() 必须来自第 3 方 #include ... 文件。我不知道有什么办法可以告诉 Windows 你将把文件直接放回去,而不是像往常一样进行清理。
  • @Deanna:你应该在安装之前卸载,否则如果旧版本有一些新版本没有的文件,这个文件就会变得悬空并且永远不会被清理。
  • @Deanna:找到UnInstallOldVersion 的代码并添加到问题中。
  • 如何将应用程序固定到我展示的任务栏,例如在this post。但这是一种 hacky 方式,并且确定图标是否被固定也是 hacky。
  • "如果旧版本有一些新版本没有的文件,这个文件就会变得悬空,永远不会被清理。"这就是[InstallDelete] 的用途。卸载是为了完全卸载,而不是删除奇怪的文件。

标签: inno-setup


【解决方案1】:

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

UsePreviousAppDir=yes

有关该主题的更多信息:http://www.jrsoftware.org/iskb.php?updateinstall

【讨论】:

  • 不,您不需要将UsePreviousAppDir 指令值显式设置为yes,因为它已经是默认值。
  • @VioletGiraffe 你真的不需要在升级之前卸载你的应用程序。在升级过程中,您可以覆盖现有文件(如本地数据库、图标文件或其他文件),安装随附文件的新版本(例如一些 DLL 等),或者如果它们不再使用并且让您烦恼,则将其删除.不确定您真正要卸载哪些文件,但如果您想在此处发布它们,请这样做。如果没有任何进一步的信息,我只会说“覆盖现有文件!”在升级期间。 InnoSetup 会自动执行此操作。
  • @tmighty:毫无疑问它会覆盖文件。我担心某些文件可能会变得悬空,但事实证明 InnoSetup 可以正确处理所有内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-16
  • 2018-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多