; 该脚本使用 HM VNISEdit 脚本编辑器向导产生 ;飞鸿QQ由erdao编写,本人不设权利,任何人都可以利用本文件进行创作。 ;调用一个配置文件,这个文件里定义了许多的宏,宏就是定义好了的一些条件模式。 !include "LogicLib.nsh" ; 安装程序初始定义常量 ;程序(产品)的名字 ,但是这个名字也是文件夹中一个html网页文件的名字 !define PRODUCT_NAME "飞鸿QQ" ;程序(产品)的版本号 !define PRODUCT_VERSION "2008正式版" ;这个程序产品的作者 !define PRODUCT_PUBLISHER "深圳东门的网站 “把一切美化”" ;这个程序产品的网站 !define PRODUCT_WEB_SITE "http://www.erdaoo.cn" ;注册表 !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\QQ.exe" !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" !define PRODUCT_UNINST_ROOT_KEY "HKLM" ;压缩的方式 ,非固实压缩 SetCompressor lzma ;XP的样式外观,选择是否打开 XPStyle on ;保存文件在安装时的时间,相当于打开记录日志了吧?? ;SetDateSave on ;这里列出的文件,可以在安装程序的尾部运行,减少占用内存 ReserveFile "${NSISDIR}\Plugins\splash.dll" ReserveFile "icon\QQUlink.bmp" InstType "完全安装" InstType "推荐安装" InstType "精简安装" ; ------ MUI 现代界面定义 (1.67 版本以上兼容) ------ !include "MUI.nsh" ; MUI 预定义常量 ;安装界面背景色 !define MUI_BGCOLOR "E1FFFF" !define MUI_ABORTWARNING ;安装图标,下一个是卸载图标 !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico" !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico" ;定义顶部图片 !define MUI_HEADERIMAGE !define MUI_HEADERIMAGE_BITMAP "icon\QQUlink.bmp" ;欢迎页面左侧的图片 !define MUI_WELCOMEFINISHPAGE_BITMAP "icon\QQUlinkL01.bmp" ;卸载页面左侧的图片 !define MUI_UNWELCOMEFINISHPAGE_BITMAP "icon\orangex.bmp" ; 欢迎页面 !define MUI_WELCOMEPAGE_TEXT "友情提示:\r\n\r\n1.${PRODUCT_NAME}2008正式版,专供飞鸿公司内部使用\r\n\r\n2.统一使用,统一公司形像\r\n\r\n\r\n\r\n\r\n欢迎大家光临!!!! \r\n\r\n${PRODUCT_PUBLISHER}\r\n\r\n\r\n\r\n${PRODUCT_WEB_SITE}\r\n\r\n" !insertmacro MUI_PAGE_WELCOME ; 许可协议页面 !define MUI_LICENSEPAGE_RADIOBUTTONS ; 设置授权协议页面的背景色 LicenseBkColor FFFFFF !insertmacro MUI_PAGE_LICENSE "QQforulink.txt" ; 组件选择页面 !define MUI_COMPONENTSPAGE_NODESC !define MUI_COMPONENTSPAGE_TEXT_TOP "不同的方式,不同的内容,飞鸿QQ,与众不同" ComponentText "" "选择安装方式:" "----------------------$\r$\n默认情况下不安装$\r$\n--->QQ空间<---$\r$\n--->QQ音乐<---$\r$\n--->QQ宠物<---$\r$\n----------------------" ;增加组件,不用添加自定义安装选项,因为脚本会自动添加的 !insertmacro MUI_PAGE_COMPONENTS ; 安装目录选择页面 !insertmacro MUI_PAGE_DIRECTORY ;安装目录页面的文字 DirText " $(^Name) 将要安装在下列文件夹。$\r$\n$\r$\n如果要安装在不同文件夹,请单击 [浏览] 并选择其他文件夹。" ; 安装过程页面 !insertmacro MUI_PAGE_INSTFILES ; 安装完成页面 ;安装完成后运行的目标 !define MUI_FINISHPAGE_RUN "$INSTDIR\QQ.exe" ;运行目标前台的文字 !define MUI_FINISHPAGE_RUN_TEXT "运行飞鸿QQ" !define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\QQforulink.txt" !define MUI_FINISHPAGE_SHOWREADME_TEXT "查看飞鸿QQ的说明文档" ;!define MUI_FINISHPAGE_SHOWREADME_FUNCTION playmusic ;!define MUI_FINISHPAGE_SHOWREADME_TEXT "欣赏音乐" !define MUI_FINISHPAGE_LINK "${PRODUCT_WEB_SITE}" !define MUI_FINISHPAGE_LINK_LOCATION "${PRODUCT_WEB_SITE}" !define MUI_FINISHPAGE_LINK_COLOR "000080" !insertmacro MUI_PAGE_FINISH ; 卸载过程页面 !insertmacro MUI_UNPAGE_INSTFILES ; 安装界面包含的语言设置 !insertmacro MUI_LANGUAGE "SimpChinese" ;!insertmacro MUI_LANGUAGE "English" ; 安装预释放文件 !insertmacro MUI_RESERVEFILE_LANGDLL !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS ; ------ MUI 现代界面定义结束 ------ ;程序的名字 Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" ;输出安装程序的名字 OutFile "${PRODUCT_NAME} .exe" ;默认的安装目录 InstallDir "$PROGRAMFILES\飞鸿QQ" ; 如果可能的话从注册表中检测安装路径 InstallDirRegKey HKLM "${PRODUCT_UNINST_KEY}" "UninstallString" ;显示在每一页里面的文字 BrandingText "飞鸿快递 越飞越红" ;是否显示安装程序的细节 ShowInstDetails show ;是否显示卸载程序的细节 ShowUnInstDetails show ; 激活安装日志记录,该日志文件将会作为卸载文件的依据(注意,本区段必须放置在所有区段之前) Section "-LogSetOn" ; LogSet on SectionEnd ;------------------组件区段开始-------------------- SectionGroup /e "腾讯QQ" Tencent Section "!QQ主程序" SEC01 ;!表示粗体描黑 /O 表示默认不选 -表示隐藏 /e表示展开 ;把安装类型定义为,完全安装=1,推荐安装=2,最小安装=3, ;在sectionIn后面列出的数字说明不管选择了哪种安装,都会默认勾选这个区段 SectionIn 1 2 3 SetOutPath "$INSTDIR\AirDLIcon" File "AirDLIcon\*.*" SetOutPath "$INSTDIR\Dat\images" File "Dat\images\*.*" SetOutPath "$INSTDIR\Dat\Torch" File "Dat\Torch\*.*" SetOutPath "$INSTDIR\Dat" File "Dat\*.*" SetOutPath "$INSTDIR\Face2" File "Face2\*.*" SetOutPath "$INSTDIR\FaceEditor" File "FaceEditor\*.*" SetOutPath "$INSTDIR\IMScene" File "IMScene\*.*" SetOutPath "$INSTDIR\NEWFACE" File "NEWFACE\*.*" SetOutPath "$INSTDIR\NEWGROUPFACE" File "NEWGROUPFACE\*.*" SetOutPath "$INSTDIR\NewSkins\QQ2008" File "NewSkins\QQ2008\*.*" SetOutPath "$INSTDIR\NewSkins\QQ2008\IMSkin" File "NewSkins\QQ2008\IMSkin\*.*" SetOutPath "$INSTDIR\flashshow\qqshow0" File "flashshow\qqshow0\*.*" SetOutPath "$INSTDIR\flashshow\qqshow1" File "flashshow\qqshow1\*.*" SetOutPath "$INSTDIR\flashshow\qqshow2" File "flashshow\qqshow2\*.*" SetOutPath "$INSTDIR\flashshow\qqshow3" File "flashshow\qqshow3\*.*" SetOutPath "$INSTDIR\flashshow\qqshow4" File "flashshow\qqshow4\*.*" SetOutPath "$INSTDIR\flashshow\qqshow5" File "flashshow\qqshow5\*.*" SetOutPath "$INSTDIR\flashshow\qqshow6" File "flashshow\qqshow6\*.*" SetOutPath "$INSTDIR\flashshow\qqshow8" File "flashshow\qqshow8\*.*" SetOutPath "$INSTDIR\flashshow\qqshow9" File "flashshow\qqshow9\*.*" SetOutPath "$INSTDIR\flashshow2\qqshow0" File "flashshow2\qqshow0\*.*" SetOutPath "$INSTDIR\flashshow2\qqshow1" File "flashshow2\qqshow1\*.*" SetOutPath "$INSTDIR\flashshow2\qqshow2" File "flashshow2\qqshow2\*.*" SetOutPath "$INSTDIR\flashshow2\qqshow4" File "flashshow2\qqshow4\*.*" SetOutPath "$INSTDIR\flashshow2\qqshow6" File "flashshow2\qqshow6\*.*" SetOutPath "$INSTDIR\flashshow2\xml0" File "flashshow2\xml0\*.*" SetOutPath "$INSTDIR\flashshow2\xml1" File "flashshow2\xml1\*.*" SetOutPath "$INSTDIR\flashshow2\xml2" File "flashshow2\xml2\*.*" SetOutPath "$INSTDIR\flashshow2\xml4" File "flashshow2\xml4\*.*" SetOutPath "$INSTDIR\flashshow2\xml6" File "flashshow2\xml6\*.*" SetOutPath "$INSTDIR\SkinBmp" File "SkinBmp\*.*" SetOutPath "$INSTDIR\SafeBase" File "SafeBase\*.*" SetOutPath "$INSTDIR\sound" File "sound\*.*" SetOutPath "$INSTDIR" File "主程序\*.*" File "QQforulink.txt" SectionEnd ;---------------------------------------------- SubSection "!QQ外挂" SEC02 Section "!QQPlus3.0" SEC2A SectionIn 1 2 3 SetOutPath "$INSTDIR" ; 如果有新的文件版本就覆盖旧的文件,并以新的时间来记录 SetOverwrite ifnewer ;File "QQPlus3.0\*.*" SectionEnd Section "!完美助手1.43.5" SEC2B SectionIn 1 2 3 SetOutPath "$INSTDIR" ;File "fp1.43.5\*.*" SectionEnd Section "!彩虹显IP2.5" SEC2C SectionEnd SubSectionEnd ;-------------------------------------------------- SubSection "!QQ美化包" SEC03 Section "!登陆框" SEC3A SectionEnd Section "!过渡界面" SEC3B SectionEnd Section "!QQ皮肤" SEC3C SectionIn 1 2 3 SetOutPath "$INSTDIR\NewSkins\Lost" File "NewSkins\Lost\*.*" SetOutPath "$INSTDIR\NewSkins\Lost\PanelSkin" File "NewSkins\Lost\PanelSkin\*.*" SetOutPath "$INSTDIR\NewSkins\Lost\IMSkin" File "NewSkins\Lost\IMSkin\*.*" SetOutPath "$INSTDIR\NewSkins\Lost\IMSkin\IMSkin" File "NewSkins\Lost\IMSkin\IMSkin\*.*" SectionEnd SubSectionEnd ;-------------------------------------------------- SubSection "!QQ可选组件" SEC04 Section "!QQ宠物" SEC4A SetOutPath "$INSTDIR\QQPet" File "QQPet\*.*" SectionEnd Section "!QQ音乐" SEC4B SetOutPath "$INSTDIR" File "QQ音乐\*.*" SectionEnd Section "!QQ空间" SEC4C SetOutPath "$INSTDIR" File "Qzone\*.*" SectionEnd SubSectionEnd SectionGroupend ; ------ 组件区段结束 ------ Function .onInit InitPluginsDir File "/oname=$PLUGINSDIR\Splash_logo.bmp" "icon\QQUlink.bmp" ; 使用闪屏插件显示闪屏 三个时间分别是:总时间,渐显时间,渐隐时间 advsplash::show 2000 1000 1000 -1 "$PLUGINSDIR\Splash_logo" Pop $0 ; $0 返回 '1' 表示用户提前关闭闪屏, 返回 '0' 表示闪屏正常结束, 返回 '-1' 表示闪屏显示出错 File "/oname=$PLUGINSDIR\bxjg.mp3" "bxjg.mp3" ; 打开音乐文件 System::Call "winmm.dll::mciSendString(t 'OPEN $PLUGINSDIR\bxjg.mp3 TYPE MPEGVIDEO ALIAS BGMUSIC', t .r0, i 130, i 0)" ; 开始播放音乐文件 System::Call "winmm.dll::mciSendString(t 'PLAY BGMUSIC NOTIFY', t .r0, i 130, i 0)" FunctionEnd ;安装结束后也播放音乐,可是不成功!为什么? ;Function playmusic ; ExecShell "open" "$INSTDIR\bxjg.mp3" ;FunctionEnd ;这个函数是在安装窗口结束后被调用 Function .onGUIEnd ; 停止播放音乐文件 System::Call "winmm.dll::mciSendString(t 'STOP BGMUSIC',t .r0,i 130,i 0)" ; 关闭音乐文件 System::Call "winmm.dll::mciSendString(t 'CLOSE BGMUSIC',t .r0,i 130,i 0)" FunctionEnd Section ;创建开始菜单中本程序的目录 CreateDirectory "$SMPROGRAMS\飞鸿QQ" ;开始菜单中的快捷方式,运行的程序,以及显示的图标 CreateShortCut "$SMPROGRAMS\飞鸿QQ\飞鸿QQ.lnk" "$INSTDIR\CaiHong.exe" ; '"$INSTDIR\Aqing.ico"' 这里如果想要用其它的图标,应该怎么样来写呢? ;CreateShortCut "$SMPROGRAMS\飞鸿QQ\用外挂上QQ.lnk" "$INSTDIR\彩虹QQ\CaiHong.exe" ;桌面上的快捷方式,运行的程序,以及显示的图标 CreateShortCut "$DESKTOP\飞鸿QQ.lnk" "$INSTDIR\QQ.exe" CreateShortCut "$DESKTOP\QQ登陆器.lnk" "$INSTDIR\qqUP.exe" ;'"$INSTDIR\Aqing.ico"' 这里如果想要用其它的图标,应该怎么样来写呢? ;为网页文件指定 一个网址URL WriteIniStr "$INSTDIR\深圳东门的网站.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}" ;在开始菜单中的程序目录里创建一个网页文件的快捷方式 CreateShortCut "$SMPROGRAMS\飞鸿QQ\深圳东门的网站.lnk" "$INSTDIR\深圳东门的网站.url" ;在开始菜单中的程序目录里创建一个程序的卸载快捷方式 CreateShortCut "$SMPROGRAMS\飞鸿QQ\卸载飞鸿QQ.lnk" "$INSTDIR\uninst.exe" SectionEnd Section ; 完成后自动关闭安装程序 SetAutoClose true ;完成后自动运行软件 ;Exec "$INSTDIR\fineplus.exe" ;完成后自动打开某个文件,也可以是网址 ExecShell "open" "http://www.erdaoo.cn" SectionEnd ;这个函数是在安装程序开始时就会被调用,主要是调整窗口来用的 Section -Post WriteUninstaller "$INSTDIR\uninst.exe" WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\QQ.exe" 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\QQ.exe" 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 ; 区段组件描述 !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${Tencent} "飞鸿QQ,与众不同" !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} "QQ的主要文件,需要安装" !insertmacro MUI_DESCRIPTION_TEXT ${SEC02} "QQ外挂,可以帮助你查看对方的IP地址,是否在线的状态,以及对方的详细资料" !insertmacro MUI_DESCRIPTION_TEXT ${SEC03} "美化文件,可以更换皮肤,登陆框,过渡界面" !insertmacro MUI_DESCRIPTION_TEXT ${SEC04} "不懂电脑的可以安装" !insertmacro MUI_DESCRIPTION_TEXT ${SEC2A} "Aqing制作的QQ增强软件,更加自由地美化QQ。" !insertmacro MUI_DESCRIPTION_TEXT ${SEC2B} "更新为1.43.5正式版,多种显IP方式,去除QQ广告" !insertmacro MUI_DESCRIPTION_TEXT ${SEC2C} "在官方原版QQ基础上显IP" !insertmacro MUI_DESCRIPTION_TEXT ${SEC3A} "可以替换的登陆框" !insertmacro MUI_DESCRIPTION_TEXT ${SEC3B} "QQ的过渡界面" !insertmacro MUI_DESCRIPTION_TEXT ${SEC3C} "美化大师“蓝雨鱼”制作的新款皮肤,以及shixuan的最新动态皮肤" !insertmacro MUI_DESCRIPTION_TEXT ${SEC4A} "QQ宠物,只是骗钱的东西" !insertmacro MUI_DESCRIPTION_TEXT ${SEC4B} "有了千千静听还要这个有啥用" !insertmacro MUI_DESCRIPTION_TEXT ${SEC4C} "极其讨厌,无比幼稚,打开很慢" !insertmacro MUI_FUNCTION_DESCRIPTION_END #-- 根据 NSIS 脚本编辑规则,所有 Function 区段必须放置在 Section 区段之后编写,以避免安装程序出现未可预知的问题。--# ;!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN ; !insertmacro MUI_DESCRIPTION_TEXT ${SEC01} "" ;!insertmacro MUI_FUNCTION_DESCRIPTION_END /****************************** * 以下是安装程序的卸载部分 * ******************************/ ; 根据安装日志卸载文件的调用宏 !macro DelFileByLog LogFile ifFileExists `${LogFile}` 0 +4 Push `${LogFile}` Call un.DelFileByLog Delete `${LogFile}` !macroend Section Uninstall Delete "$INSTDIR\${PRODUCT_NAME}.url" ; 调用宏只根据安装日志卸载安装程序自己安装过的文件 !insertmacro DelFileByLog "$INSTDIR\install.log" ; 清除安装程序创建的且在卸载时可能为空的子目录,对于递归添加的文件目录, ;请由最内层的子目录开始清除(注意,不要带 /r 参数,否则会失去 DelFileByLog 的意义) ;删除快捷方式 Delete "$SMPROGRAMS\飞鸿QQ\飞鸿QQ.lnk" Delete "$SMPROGRAMS\飞鸿QQ\卸载飞鸿QQ.lnk" Delete "$SMPROGRAMS\飞鸿QQ\深圳东门的网站.lnk" RMDir "$SMPROGRAMS\飞鸿QQ" Delete "$DESKTOP\飞鸿QQ.lnk" Delete "$DESKTOP\QQ登陆器.lnk" ;删除所有文件 ,删除的时候要从内向外,一层一层地进行删除 ;使用了 /r 这个参数,它会彻底地删除指定的目录。 Delete "$INSTDIR\3DShow\*.*" RMDir "$INSTDIR\3DShow" Delete "$INSTDIR\AirDLIcon\*.*" RMDir "$INSTDIR\AirDLIcon" Delete "$INSTDIR\data\*.*" RMDir "$INSTDIR\data" Delete "$INSTDIR\Dat\images\*.*" Delete "$INSTDIR\Dat\Torch\*.*" Delete "$INSTDIR\Dat\*.*" RMDir "$INSTDIR\Dat" Delete "$INSTDIR\Face2\*.*" RMDir "$INSTDIR\Face2" Delete "$INSTDIR\FaceEditor\*.*" RMDir "$INSTDIR\FaceEditor" Delete "$INSTDIR\IMScene\*.*" RMDir "$INSTDIR\IMScene" Delete "$INSTDIR\LoginLogo\*.*" RMDir "$INSTDIR\LoginLogo" Delete "$INSTDIR\NEWFACE\*.*" RMDir "$INSTDIR\NEWFACE" Delete "$INSTDIR\NEWGROUPFACE\*.*" RMDir "$INSTDIR\NEWGROUPFACE" Delete "$INSTDIR\SafeBase\*.*" RMDir "$INSTDIR\SafeBase" Delete "$INSTDIR\QQPet\*.*" RMDir "$INSTDIR\QQPet" Delete "$INSTDIR\QRingFiles\*.*" RMDir "$INSTDIR\QRingFiles" Delete "$INSTDIR\Qzone\*.*" RMDir "$INSTDIR\Qzone" Delete "$INSTDIR\SkinBmp\*.*" RMDir "$INSTDIR\SkinBmp" Delete "$INSTDIR\sound\*.*" RMDir "$INSTDIR\sound" Delete "$INSTDIR\*.*" RMDir /r "$INSTDIR" DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}" SetAutoClose true SectionEnd #-- 根据 NSIS 脚本编辑规则,所有 Function 区段必须放置在 Section 区段之后编写,以避免安装程序出现未可预知的问题。--# Function un.onInit FindProcDLL::FindProc "$(^Name).exe" Pop $0 IntCmp $0 1 0 no_run MessageBox MB_ICONSTOP "(你的程序)正在运行,请先关闭程序!" Quit no_run: MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "你确实要完全移除 $(^Name) ,及其所有的组件?" IDYES +2 Abort FunctionEnd Function un.onUninstSuccess HideWindow MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功地从你的计算机移除。" FunctionEnd ; 以下是卸载程序通过安装日志卸载文件的专用函数,请不要随意修改 Function un.DelFileByLog Exch $R0 Push $R1 Push $R2 Push $R3 FileOpen $R0 $R0 r ${Do} FileRead $R0 $R1 ${IfThen} $R1 == `` ${|} ${ExitDo} ${|} StrCpy $R1 $R1 -2 StrCpy $R2 $R1 11 StrCpy $R3 $R1 20 ${If} $R2 == "File: wrote" ${OrIf} $R2 == "File: skipp" ${OrIf} $R3 == "CreateShortCut: out:" ${OrIf} $R3 == "created uninstaller:" Push $R1 Push `"` Call un.DelFileByLog.StrLoc Pop $R2 ${If} $R2 != "" IntOp $R2 $R2 + 1 StrCpy $R3 $R1 "" $R2 Push $R3 Push `"` Call un.DelFileByLog.StrLoc Pop $R2 ${If} $R2 != "" StrCpy $R3 $R3 $R2 Delete /REBOOTOK $R3 ${EndIf} ${EndIf} ${EndIf} StrCpy $R2 $R1 7 ${If} $R2 == "Rename:" Push $R1 Push "->" Call un.DelFileByLog.StrLoc Pop $R2 ${If} $R2 != "" IntOp $R2 $R2 + 2 StrCpy $R3 $R1 "" $R2 Delete /REBOOTOK $R3 ${EndIf} ${EndIf} ${Loop} FileClose $R0 Pop $R3 Pop $R2 Pop $R1 Pop $R0 FunctionEnd Function un.DelFileByLog.StrLoc Exch $R0 Exch Exch $R1 Push $R2 Push $R3 Push $R4 Push $R5 StrLen $R2 $R0 StrLen $R3 $R1 StrCpy $R4 0 ${Do} StrCpy $R5 $R1 $R2 $R4 ${If} $R5 == $R0 ${OrIf} $R4 = $R3 ${ExitDo} ${EndIf} IntOp $R4 $R4 + 1 ${Loop} ${If} $R4 = $R3 StrCpy $R0 "" ${Else} StrCpy $R0 $R4 ${EndIf} Pop $R5 Pop $R4 Pop $R3 Pop $R2 Pop $R1 Exch $R0 FunctionEnd