如何解决SelfDel 函数会删除卸载程序,但不会使用 NSIS 删除应用程序目录
为了对安装程序和卸载程序进行签名,我按照此处的建议创建了一个单独的卸载程序脚本:https://nsis-dev.github.io/NSIS-Forums/html/t-245688.html。因此,卸载程序脚本不使用 WriteUninstaller
方式创建卸载程序。
请注意,我使用SelfDel插件删除卸载程序,成功;但是,即使我使用了 /RMDIR
选项,它实际上也不会删除应用程序安装目录:
Function .onInstSuccess
;SelfDel::Del /REBOOT
;SelfDel::Del /SHUTDOWN
SelfDel::Del /RMDIR
SelfDel::Del
SetAutoClose true
FunctionEnd
这里是完整的脚本供您参考。
!define APP_COPYRIGHT "MyApp © MyCompany 2021"
!define COMPANY_NAME "MyCompany"
!define LANG_ENGLSH "English"
!define PRODUCT_NAME "MyApp"
!define PRODUCT_VERSION "${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}.${BUILD_VERSION}"
!define SETUP_NAME "uninstaller.exe"
# define the name of the installer
OutFile ${SETUP_NAME}
Icon "favicon.ico"
!define MUI_ICON "favicon.ico"
# define the directory to install to
InstallDir "$PROGRAMFILES64\${PRODUCT_NAME}\"
# default section
Section
# define the output path for this file
SetOutPath $INSTDIR
# now delete installed files and registry keys for MyApp
ReadRegStr $0 HKCU "SOFTWARE\${PRODUCT_NAME}" "InstallLocation"
DeleteRegKey HKCU "SOFTWARE\${PRODUCT_NAME}"
Delete $0\config.dat
Delete $0\MyApp.exe
Delete $0\ReleaseNotes.txt
Delete $0\MyApp_LandingPage_114.bmp
Delete $0\MyAppLicense.txt
Delete "$SMPROGRAMS\MyApp.lnk"
DeleteRegKey HKCU "SOFTWARE\${PRODUCT_NAME}"
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
DeleteRegKey /ifempty HKCU "Software\Modern UI Test"
SectionEnd
Function .onInstSuccess
;SelfDel::Del /REBOOT
;SelfDel::Del /SHUTDOWN
SelfDel::Del /RMDIR
SelfDel::Del
SetAutoClose true
FunctionEnd
有人对如何删除应用程序目录有任何建议吗? TIA。
解决方法
所以我不太了解 SelfDel nsis 插件,但是您是否尝试过像这样删除安装目录后重新启动机器?
SelfDel::Del /RMDIR
SelfDel::Del
SelfDel::Del /REBOOT
;or just
Reboot
这可能会有所帮助。
祝你一切顺利。
更新
好的,所以您尝试重新启动。
我对该主题进行了进一步研究并发现了同样的问题,但没有使用 SelfDel 插件:How to solve "The directory is not empty" error when running rmdir command in a batch script?
但也许您也可以尝试以“正常的 NSIS 方式”删除目录和所有文件,如下所示:
RMDir /r $YOURDIR
试试这个也许它会起作用,也许这只是插件的一些错误。
该插件的 SourceForge 站点说它只是在 Windows 8 上测试,所以如果你在 Windows 10 上使用它可能会有一些错误。
阅读 SourceForge 网站底部的注释:https://nsis.sourceforge.io/SelfDel_plug-in 他们说这是一种木马病毒,我建议您停止使用它。
我会认真考虑使用另一个适用于 Windows 10 的 testet 插件。
祝你一切顺利。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。