Installation NSIS使用IfSIlent跳转执行命令行命令

Installation NSIS使用IfSIlent跳转执行命令行命令,installation,nsis,uninstallation,silent,silent-installer,Installation,Nsis,Uninstallation,Silent,Silent Installer,我试图通过第二次运行安装程序使我的安装程序以静默方式卸载。在函数un.onInit下使用SetSilent在手动单击可执行文件时有效,但在通过命令行以静默方式运行时无效。我相信多个线程运行(安装程序与卸载程序可执行文件一起运行)也是如此,所以为了纠正这个问题,我想使用IfSilent跳转,并在安装程序静默运行时运行命令行命令。这是我的 IfSilent 0+2 Exec'$INSTDIR\uninstall.exe”/S' 我已将其嵌套在包含文件的主要部分中。我已经检查过了,上面的命令似乎没有被

我试图通过第二次运行安装程序使我的安装程序以静默方式卸载。在函数un.onInit下使用SetSilent在手动单击可执行文件时有效,但在通过命令行以静默方式运行时无效。我相信多个线程运行(安装程序与卸载程序可执行文件一起运行)也是如此,所以为了纠正这个问题,我想使用IfSilent跳转,并在安装程序静默运行时运行命令行命令。这是我的

IfSilent 0+2

Exec'$INSTDIR\uninstall.exe”/S'

我已将其嵌套在包含文件的主要部分中。我已经检查过了,上面的命令似乎没有被执行。上述
exec
命令是否正确使用

更新:我已经添加了我试图创建的安装程序中的一些代码。我想做的是检查系统,看看目标机器上是否存在应用程序。如果是,我想卸载以前的版本

#Installer Functions
Function .onInit

    ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" "UninstallString"
    StrCmp $R0 "" done

    ;Run the uninstaller
    ClearErrors
    ExecWait '"$R0" /S _?=$INSTDIR'
    IfErrors no_remove_uninstaller done
    no_remove_uninstaller:
    done:
        InitPluginsDir
FunctionEnd
现在我的问题来了。如果我正常安装的话,它可以正常工作。但是,当我尝试以静默方式安装时,卸载程序不会执行


请注意,我使用$R0是因为我想处理这样一种情况,即用户可以选择不同的目录,然后选择安装目录。我也尝试过使用INSTDIR,但它仍然不起作用

您需要使用一个特殊参数运行卸载程序:

ExecWait '"$INSTDIR\uninstaller.exe" /S _?=$INSTDIR'
Delete "$INSTDIR\uninstaller.exe"

我不完全理解你想做什么,请澄清。我正在尝试在执行安装之前卸载我的应用程序的早期版本。