nsis把nw.js整个项目编译成一个exe包,可以实现分发给客户时,可以给用户更好的体验,但是隐藏着一个坑。也可以说是nw.js本身存在的坑。由于nw.js是基于node.js和chromium的应用程序运行环境的。如果项目用到localstorage来实现部分缓存和自动登录功能实现,则作为浏览器的内核渲染页面,则用户安装应用后 必然会生成本地缓存。导致用户下次重装应用时,还是使用上一个安装包的缓存数据,因此需要在上一个应用卸载应用时或者安装新的应用时 把之前的用户缓存文件删除掉。因此需要nsis命令删除用户目录下的缓存删除。 RMDir /r "$PROFILE\AppData\Local\demoproject" RMDir删除文件夹,/r表示在当前文件夹路径下递归查找,而不是当前文件夹路径下文件为空时才能删除文件。$PROFILE表示当前用户目录下 ,AppData\Local\demoproject就是当前用户目录下缓存demoproject应用的缓存数据。详细nsi编译文件命令如下:
···sho
Section ""
;清空上次安装的用户缓存信息
RMDir /r "$PROFILE\AppData\Local\demoproject"
;将输出路径设置为安装目录
SetOutPath "$INSTDIR"
;ADD YOUR OWN FILES HERE...
File /r "demoproject"
;创建桌面快捷方式
CreateShortCut "$DESKTOP\demoproject.lnk" "$INSTDIR\demoproject\demoproject.exe" "" "$INSTDIR\demoproject\demoproject.exe" 0
;创建开始菜单快捷方式
CreateDirectory "$SMPROGRAMS\demoproject"
CreateShortcut "$SMPROGRAMS\demoproject\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
CreateShortcut "$SMPROGRAMS\demoproject\demoproject.lnk" "$INSTDIR\demoproject\demoproject.exe" "" "$INSTDIR\demoproject\demoproject.exe" 0
;向注册表写入安装路径
WriteRegStr HKCU "Software\demoproject" "" $INSTDIR
WriteRegStr HKCU "Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" "$INSTDIR\demoproject\demoproject.exe" "RUNASADMIN"
;向注册表写入卸载信息
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\demoproject" "DisplayName" "demoproject"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\demoproject" "UninstallString" '"$INSTDIR\uninstall.exe"'
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\demoproject" "NoModify" 1
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\demoproject" "NoRepair" 1
;创建卸载程序
WriteUninstaller "$INSTDIR\Uninstall.exe"
SectionEnd
;--------------------------------
;Uninstaller Section
Section "Uninstall"
;ADD YOUR OWN FILES HERE...
RMDir /r "$INSTDIR\demoproject"
;删除卸载程序
Delete "$INSTDIR\Uninstall.exe"
;删除桌面快捷方式
Delete "$DESKTOP\demoproject.lnk"
;删除开始菜单目录
Delete "$SMPROGRAMS\demoproject\*.*"
RMDir "$SMPROGRAMS\demoproject"
;删除安装目录
RMDir "$INSTDIR"
;清空上次安装的用户缓存信息
RMDir /r "$PROFILE\AppData\Local\demoproject"
;删除注册表键
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\demoproject"
DeleteRegKey /ifempty HKCU "Software\demoproject"
SectionEnd
```
参考链接:https://blog.csdn.net/u011014707/article/details/17783739