【发布时间】:2026-02-15 23:20:03
【问题描述】:
有一个应用必须先卸载才能升级(我无法更改)。
当然,新安装的默认目录应该是之前版本的安装位置。但由于该应用已被卸载,UsePreviousAppDir 不起作用。
获取已卸载应用程序目录的最佳方法是什么?有没有存放的地方?如何为此管理新的注册表项?
【问题讨论】:
标签: inno-setup
有一个应用必须先卸载才能升级(我无法更改)。
当然,新安装的默认目录应该是之前版本的安装位置。但由于该应用已被卸载,UsePreviousAppDir 不起作用。
获取已卸载应用程序目录的最佳方法是什么?有没有存放的地方?如何为此管理新的注册表项?
【问题讨论】:
标签: inno-setup
卸载后无法找到应用程序之前的位置,只能要求用户记住并重新输入。
但是,此问题的一个简单解决方案是从升级程序本身触发卸载 -- UsePreviousAppDir 在向导首次打开时生效,因此可以安全地发现以前的应用程序目录并在之后的任何时候卸载.最推荐的时间是PrepareToInstall handler。
请记住,您仍然可能无法找到之前的路径,原因可能是用户在运行升级程序之前手动卸载,或者安装失败、崩溃或在成功卸载后被取消以前的版本。所以无论如何你都需要一个备份(比如询问用户,或者假设一些合理的默认值)。
请确保您确实需要事先卸载 - 虽然在少数情况下需要卸载(例如之前的版本未与 Inno 一起安装 - 在这种情况下 UsePreviousAppDir 不是'也不会帮助你),大多数时候你应该只是安装在顶部,使用标志和[InstallDelete] entries根据需要跳过或删除旧文件。
【讨论】: