nw.js项目用nsis打包成一个exe文件的坑

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/baidu_30907803/article/details/80354444

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

猜你喜欢

转载自blog.csdn.net/baidu_30907803/article/details/80354444