我要实现这样一个功能,安装一个软件的时候,会对注册表写入一些信息,包括文件的路径,等等。这个很简单,用[Registry]可以写好。
我在[Tasks]中写了一个
Name: outreg; Description: 导出注册表文件; Flags: unchecked
然后在[Code]中写上
procedure InitializeWizard();
var iResultCode: Integer;
appDir, regFileName, keyName: String;
begin
appDir:=ExpandConstant('{pf}\green');
regFileName:= appDir+'\winr.reg';
keyName:= 'HKEY_LOCAL_MACHINE\SOFTWARE\color\green\1.0';
CreateDir(appDir);
InstExec('regedit','/E "'+regFileName+'" "'+keyName+'"', '', true, false, 0, iResultCode);
end;
这个代码是借用老虎兄提供的,目的是导入注册信息为注册表文件。
现在我的问题是:
1.注册表文件导出是在{pf}\green文件夹下面,而未必是在{app}文件夹下面。我希望得到的是在{app}文件夹下面。因为{app}不一定等于{pf}\green,用户一旦修改安装目录,注册信息就在另外地方生成了,这样不太好。
2.我要导出的注册信息,有很多内容是在[Registry]中导入的,我希望得到的是新的信息,(因为有些信息是由安装过程决定的)。实际上,我得到的是安装前的信息。PS:我是把[Code]段放在ISS文件末尾的。不晓得为什么安装文件先执行[Code]段。
3.我前面设置了[Tasks],我希望选中outreg的情况下执行[Code],不选中outreg的情况下跳过这个,不知道怎么设置。
求助达人