在Inno设置中升级代码等效

Ast*_*gas 5 installer inno-setup pascalscript

Inno Setup中Visual Studio安装程序升级代码的等价物是什么?我发现这篇文章如何使用InstallShield升级代码GUID在Inno Setup中卸载相关产品,以使用升级代码搜索产品.AppId与UpgradeCode相同吗?我是Inno设置的新手,有人可以帮助我吗?

Mir*_*ral 5

通常,您在安装升级时不会卸载旧版本的应用程序。

AppId是有点相关; 给定具有相同 id 的两个安装程序(或更常见的是同一安装程序的两个版本),默认情况下 Inno 将提供安装到与先前安装相同的文件夹中,并且两者将共享卸载信息。

通常,当发布同一应用程序的升级版本时,您需要做的就是确保AppId(或者AppName如果您没有指定 id)与旧版本中的相同,一切都会正常工作。

强烈推荐的一件事(即使对于第一个版本)是将以下内容添加到您的[Setup]部分:

DisableDirPage=auto
DisableProgramGroupPage=auto
Run Code Online (Sandbox Code Playgroud)

这将让用户在第一次安装时选择安装位置,但在后续安装/升级时隐藏选择。由于 Inno 无论如何都默认为前一个位置,因此这避免了将安装位置从一个安装更改为下一个安装位置可能导致的任何混淆(和剩余文件)。

除此之外,几乎不需要做任何其他事情。在极少数情况下,您可能会使先前版本中使用的特定文件变得多余(例如,不再使用特定库);如果您愿意,您可以通过使用[InstallDelete]条目从不再需要的先前版本中删除任何文件来处理此问题。(始终确保您只按名称删除特定文件——使用通配符非常危险。)尽管如此(除非它们很大),但留下冗余文件通常没有太大害处——如果它们最终会被清理掉用户卸载。

如果您想进一步自定义行为,您可以在[Code].

  • 您可以根据需要更改“AppName”,只要“AppId”保持不变。但是,如果您已经使用没有指定`AppId` 的脚本发布了软件,那么您需要使您的*下一个* 版本具有相同的`AppName` 并且仍然没有`AppId`,或者有一个` AppId` 设置为等于之前版本的 `AppName`(缺少 `AppId`)。我希望这很清楚。:) (4认同)