2012-02-02 94 views
0

我需要卸载以前的版本,如果已经安装。我有一个NSIS脚本。这是我曾尝试: -如何使用NSIS脚本静默卸载以前的版本?

Function UninstallPreviousVersion 
    ReadRegStr $R0 ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" 
    StrCmp $R0 "" done remove 
    remove: 
      DetailPrint "Removing previous installation." 
      ExecWait '"$INSTDIR\uninst.exe" /S _?=$INSTDIR' 
    done: 
FunctionEnd 

但是当我运行它,而不是卸载旧的并安装新版本。它会在安装文件夹下创建一个新的文件夹'bin'。

请帮忙吗?

回答

0

如果旧安装位置与$ instdir不同,您可能需要从注册表中读取卸载目录,但这不是您真正的问题。您的代码确实看起来是正确的,所以我建议您在卸载程序代码中执行一些“MessageBox调试”...

+0

我做了messagbox调试。它进入删除块。结果是它在安装目录下的bin \ release \文件夹下安装新版本。 – User13839404 2012-02-02 20:54:46

+0

您是否在'卸载程序代码'中表示在部分卸载中进行调试? – User13839404 2012-02-02 20:58:03

+0

@ User13839404是 – Anders 2012-02-02 21:10:49

相关问题