在软件在安装过程中我们常要对不同的操作系统设置不同的注册表信息,如我们要在软件的安装过程中自动关闭XP自带的防火墙,这时,我们的setup 就要自动进行判断,当前系统是不是XP ,如果是则就在注册表中写入:
[HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/SharedAccess/Parameters/FirewallPolicy]
[HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/SharedAccess/Parameters/FirewallPolicy/StandardProfile]
"DoNotAllowExceptions"=dword:00000000
[HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/SharedAccess/Parameters/FirewallPolicy/StandardProfile/AuthorizedApplications]
[HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/SharedAccess/Parameters/FirewallPolicy/StandardProfile/AuthorizedApplications/List]
"C://ActiveSoft//AmServer//AMS.EXE"="C://ActiveSoft//AmServer//AMS.EXE:*:Enabled:AMS.EXE"
[HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/SharedAccess/Parameters/FirewallPolicy/StandardProfile/GloballyOpenPorts]
[HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/SharedAccess/Parameters/FirewallPolicy/StandardProfile/GloballyOpenPorts/List]
"5001:TCP"="5001:TCP:*:Enabled:AMS5001"
系统就会针对XP 自动关闭 防火墙
在InstallAide(NextInstaller) 中q我们可以很方便的实现这一点
只要独立新建一个 RegObj ,然后设置数据, 针对其中的数据我们可以用变量来实现, 如变量名为:[PATH_S_TARGETDIR]/AMS.EXE 值为:[PATH_S_TARGETDIR]/AMS.EXE:*:Enabled:AMS.EXE
接下来最重要的一点就是如何让它只在xp 系统中进和设置,方法很简单,只要在当前RegObj 对象的 OS 属性中选中 Windows XP 就可以了