【发布时间】:2015-04-28 23:14:33
【问题描述】:
我的应用程序将安装另一个应用程序。这可以通过在我的程序中使用 ShellAPI 运行该应用程序的 setup.exe 轻松完成。
但是如果这个外部应用程序已经存在,我想先卸载它。我可以自己打开控制面板,找到应用程序,然后有一些“卸载”或“修复”菜单选项。单击任一将打开此应用程序的 InstallAware 向导。
我可以从我的应用程序中启动此向导吗?用户仍然需要单击并确认所有内容,但我正在尝试合并卸载和重新安装此外部应用程序的全新/较新版本所需的步骤。我找不到要运行的uninstall.exe 之类的东西。从控制面板链接执行什么来卸载应用程序?
【问题讨论】:
-
使用任务管理器,我发现 InstallAware 的 application.exe 位于类似
C:\ProgramData\{170EC0AA-F47B-478E-9124-108BF7C47E71}的位置。如果我只是运行那个 EXE,卸载程序就会打开。这是如何确定和创造的?有多个具有这种 GUID 的文件夹。如何确定我需要哪一个? -
您可以从注册表中获取该信息:stackoverflow.com/questions/10122761/…
-
有点取决于其他应用程序使用的设置技术。您需要在此基础上获得更多信息。如果安装的版本比您提供的版本更新怎么办。您的用户不会喜欢您卸载版本 N+1 并替换为版本 N。如果用户想要同时保留版本 N 和 N+1 怎么办。在您了解更多细节之前,我认为没有人可以给您详细的建议。
-
@DavidHeffernan 我将能够根据我提供的版本检查现有版本。这是有一定道理的。
-
@ikathegreat 这很难做到,除非你是安装者。除非您让安装程序执行此逻辑,否则您的检测将失败。
标签: delphi uninstallation installaware