最近编写NTPort Library 2.6的安装程序,使用的是NSIS 2.05。其中有一个功能是:在卸载时,需要恢复从注册中的某个项目中删除掉添加的内容,这可以使用字符串替换来实现,即使用空串替换掉添加的内容就可以了。NSIS本身提供的字符串函数是很少的,大多数字符串函数都是借助它强大的宏功能实现的。字符串替换可以使用StrRep来实现。StrRep函数包含在StrFunc.nsh文件中。在NSIS的例子中,有一个StrFunc.nsi就是介绍如何使用这些函数的。要实现字符串函数,需要包含StrFunc.nsh,而且需要先在函数或sections之外先调用一次所使用的函数,不带任何参数(这是容易忘记的)。然后才能在正确地调用该字符串函数。由于我们要在卸载时调用StrRep,所以需要调用的宏是UnStrRep。下面是一个简单的例子:
!include "StrFunc.nsh"
{UnStrRep}
Section "Uninstall"
......
; 去掉$regpath中的安装目录信息
${UnStrRep} $regpath $regpath $INSTDIR ""
......
SectionEnd