NSIS 在继续安装之前卸载以前的应用程序

问题描述 投票:0回答:1

在继续安装之前,如果之前已安装过该应用程序,我想为用户提供卸载该应用程序的选项。下面是我的尝试:

 Function .onInit
    ; $R0 contains the path to the uninstaller
    IfFileExists $R0 +1 NoPriorInstall
        MessageBox MB_YESNO "Existing App installation found. Installation cannot proceed unless App is uninstalled.$\r$\nUninstall App?" IDYES UninstallApp
            Abort
 UninstallApp:
        ExecWait $R0
 NoPriorInstall: 
 FunctionEnd

它可以工作,但是非模式“永久删除应用程序”是否对话框与非模式“应用程序设置”向导同时弹出,以便可以在卸载应用程序之前安装应用程序或以其他方式安装应用程序圆形。

我想要:

  • 在“应用程序安装”向导之前弹出“永久删除应用程序”是否对话框(我希望
    ExecWait
    会暂停安装程序,但事实并非如此),或者
  • “永久删除应用程序”是或否对话框是模态的,因此在“应用程序设置”向导之前需要注意。 (我不完全确定这是可能的,因为安装程序和卸载程序是不同的进程。)

我希望运行卸载程序

R0
我想运行应用程序卸载程序(如果存在),即如果该应用程序已经存在于之前

nsis
1个回答
0
投票

如果您想等待,您需要使用特殊的 _?= 参数 调用旧的卸载程序。如果您这样做,则必须在卸载程序完成后自行删除该卸载程序。

您可以在 wiki 上找到我的完整示例

© www.soinside.com 2019 - 2024. All rights reserved.