使用NSIS卸载以前的Wix安装程序时,将花费更长的时间,并且应用程序标题栏显示为“无响应”

时间:2019-02-20 09:14:31

标签: wix nsis

我将软件从Wix安装程序迁移到了NSIS。安装新版本的软件后,我首先需要卸载以前的Wix软件包(如果有)。

从NSIS安装程序的“欢迎”屏幕中,单击“下一步”时,我正在检查以前的Wix软件包,如果存在,则将其卸载。以下是我的代码段:

!define MUI_PAGE_CUSTOMFUNCTION_LEAVE RemovePrevVerFunction

!insertmacro MUI_PAGE_WELCOME

!insertmacro MUI_LANGUAGE "English"

Function RemovePrevVerFunction
ReadRegStr $R0 HKLM "SOFTWARE\EMR\3.01.00" "InstallPath"
${If} $R0 != ""
MessageBox MB_OKCANCEL "EMR 3.01.00 is already installed. Remove the pervious version?" IDOK uninst
Abort
uninst:
ExecWait '"MsiExec.exe" /X{8ED262EE-FC73-47A9-BB86-D92223246881} /qn'   ; /x is to uninstall and /qn is to uninstall it silently
${EndIf}
FunctionEnd

使用上述代码,我可以卸载以前的版本。但是我还需要做几件事。

  1. 虽然卸载需要花费较长时间,并且“欢迎”屏幕也将变为“无响应”,但最终它会完成卸载过程。 有什么方法可以卸载它而不会变得没有响应?

  2. 我想显示卸载时的进度,以便最终用户知道卸载正在进行。为此,我删除了“ / qn”(静默卸载),如果删除了“ / qn”,则显示进度,但又弹出一个消息框“您确定要卸载此产品吗?” (可能是来自以前的wix安装程序)。有什么方法可以显示进度而不显示消息框“确定要卸载此产品吗?”

请帮助我。

1 个答案:

答案 0 :(得分:1)

编写/qb!作为参数。

这应该可行,因为参数/qb显示基本UI,没有模态对话框,另外/qb!表示您不能取消卸载过程。

有关它的更多信息,您可以找到here

问候