wix - 使用 NSIS 卸载以前的 Wix 安装程序需要更长的时间,并且应用程序标题栏显示“无响应”
问题描述
我将我的软件从 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
使用上面的代码,我可以卸载以前的版本。但我需要做更多的事情。
虽然卸载它需要更长的时间,欢迎屏幕也变成“无响应”,但最终它正在完成卸载过程。有什么方法可以卸载它而不会没有响应?
我想在卸载时显示进度,以便最终用户知道卸载正在进行。为此,我删除了“/qn”(静默卸载),如果删除“/qn”,它会显示进度,但会弹出一个消息框“您确定要卸载此产品吗?” (可能是来自以前的 wix 安装程序)。有什么方法可以显示进度而不显示消息框“您确定要卸载此产品吗?”
请帮助我。
解决方案
推荐阅读
- vapor - 蒸气 4 流畅。复杂查询、过滤和创建(如果不存在)
- reactjs - 为什么我会收到此“对象作为 React 子项无效”错误?
- python - 在 Python/Pandas 中将 dtype 'object' 的所有列转换为 'float'
- javascript - 使用 array.reduce 计算数组中的匹配项
- java - 尝试调用显示该方法并返回输入值的方法
- android - 无法使用 socket.io 从 Android 客户端连接到 node.js 服务器
- python - 我在浏览器中看不到我的 elasticbeanstalk 应用程序
- javascript - 在 Java 脚本中访问解析的 JSON 响应中的数组
- huawei-mobile-services - Android Studio 无法下载 com.huawei.hms:push:4.0.2.300
- elasticsearch - Elasticsearch 7.3.0, Rejecting mapping update to [] as the final mapping would have more than 1 type: [1, 2]