1

我正在为我的应用程序编写一个 inno 安装程序。如果我的应用程序已经安装,我希望这个安装程序既可以作为完整的安装程序,也可以作为更新。

如果我的应用程序已经安装,我能够使用 inno 设置创建一个“更新”安装,它将替换旧文件。如果没有,它只会进行完整安装。

问题在于 Windows 中的卸载密钥。Inno setup 为每次安装创建一个卸载密钥。因此,如果我进行更新,我的应用程序将有两个卸载密钥。如果我禁用卸载密钥的创建,那么完整安装将不会创建它。

可以在运行时关闭 CreateUninstallRegKey 和 UpdateUninstallLogAppName 吗?

4

1 回答 1

5

如果您的完整安装和更新安装之间的大小差异很小(通常是这种情况),那么您应该使两者实际上是完全相同的安装程序。

执行此操作的最简单(也是最可靠)的方法是确保您设置了一个AppId(如果您在未能执行此操作的字段中已经有一些输出,则将 设置为与现有AppId的相同的值)。 AppName

接下来,检查您的[Files]条目;确保Flags在所有文件上都指定了适当的。(作为一般规则,安装到的文件{app}通常应该有“ ignoreversion”;用户可编辑的文件应该有“ onlyifdoesntexist”;共享库应该有“ replacesameversion sharedfile”,但在特定情况下您可能需要不同的东西。)

然后只需设置DisableDirPage=autoDisableProgramGroupPage=auto(并将其他所有内容保留为默认值),Inno 将使用原始安装期间输入的值自动跳过目录和开始菜单选择页面进行升级。没有混乱,没有大惊小怪。

于 2012-07-04T08:17:47.750 回答