NSIS打包程序时卸载不净问题

在用NISEDIT打安装包后遇到三个问题

1、在重新包装时,程序路径会出现问题,会指向子文件夹中,程序就公出错。而且多次重复包装后文件路径会变长

原因:研究代码,发现是安装时写入的注册表中的程序路径不对

解决:改为正确的路径

Section -Post
  WriteUninstaller "$INSTDIR\uninst.exe"
  WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\frogTunnel.exe"   //此为改正后的代码,原先是指向了$INSTDIR的子目录中,所以当重复安装时路径会出错
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\frogTunnel.exe" //此为改正后的代码,原先是指向了$INSTDIR的子目录中,所以当重复安装时路径会出错
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
SectionEnd


2、在程序卸载后,有部分文件没有删除掉。

原因:有的文件夹没有写入到移除过程中

  RMDir "$INSTDIR\Adobe AIR\Versions\1.0"
  RMDir "$INSTDIR\Adobe AIR"

如上Versions文件夹没有移除

解决:在两句中间加入移除Versions语句

RMDir "$INSTDIR\Adobe AIR\Versions\1.0"
  RMDir "$INSTDIR\Adobe AIR\Versions"
  RMDir "$INSTDIR\Adobe AIR"


3、同样是卸载后,开始 的快捷方式没有删除

原因:可能和用户权限有关系,具体没有深究

解决:

(1)加入admin权限 RequestExecutionLevel admin

ShowInstDetails show
ShowUnInstDetails show
RequestExecutionLevel admin #NOTE: You still need to check user rights with UserInfo!


Section "MainSection" SEC01

(2)在创建开始菜单和卸载时加入SetShellVarContext all


  //创建开始菜单

  SetShellVarContext all
  !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
  CreateDirectory "$SMPROGRAMS\$ICONS_GROUP"
  CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\铁路隧道限界.lnk" "$INSTDIR\frogTunnel.exe"
  CreateShortCut "$DESKTOP\铁路隧道限界.lnk" "$INSTDIR\frogTunnel.exe"

 //卸载

 Section Uninstall
     SetShellVarContext all

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liushuiwushang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值