在用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