Install Shield中如何判断搜索路径已经被加入? (100分)

Y

yz

Unregistered / Unconfirmed
GUEST, unregistred user!
我在Install Shield 6.1中有如下一段脚本,其中要把BDE和Oracle的路径加到系统的path中,
98下加到Autoexec.bat中,2000下写到注册表中,但是我不知如何判断该路径是否已经被
加到了Autoexec.bat中,或者是注册表中,因为多次安装会添加多次,哪位朋友知道请速速告知。
另:我想在安装过程中弹出一个窗口,由用户填写一个IP地址,然后用它替换某个文件中已有的
IP地址,不知如何办到?
这个问题很急,希望能尽快回复,推荐相关资料也行(一定要是有效的),分数不够可以加,
一、两周之后就无效了,我也就只好请版主帮我收回分数了。
function OnMoved()
#define BAT_DIR 'C://'
#define BAT_FILE 'autoexec.bat'
#define WM_WININICHANGE 0x001A
#define HWND_BROADCAST 0xffff
NUMBER nvResult, nvOSType, nvFileHandle;

STRING svResult, szPath1, szPath2, szKey, szBatFile, szEnv, svPathBuffer;
POINTER pEnv;
begin
if nInstallType != REMOVEALL then
//不是卸载
//根据不同的操作系统,修改批处理,或环境变量
szBatFile = BAT_DIR + BAT_FILE;
szPath1 = TARGETDIR + '//Ora81//bin';
szPath2 = COMMONFILES + '//Borland Shared//Bde';

if (GetSystemInfo (OS, nvResult, svResult) < 0) then
nvOSType = -1;
//不知是何种操作系统
else
switch (nvResult)
case IS_WINDOWSNT:
nvOSType = IS_WINDOWSNT;
// OS: Windows NT
case IS_WINDOWS9X:
nvOSType = IS_WINDOWS9X;
// OS: Windows 9x
endswitch;
endif;

switch (nvOSType)
case IS_WINDOWS9X: // OS: Windows 9x
LongPathToShortPath(szPath1);
LongPathToShortPath(szPath2);

//如果不存在Autoexec.bat则创建它
if Is(FILE_EXISTS, szBatFile) <= 0 then
OpenFileMode(FILE_MODE_BINARY);
CreateFile(nvFileHandle, BAT_DIR, BAT_FILE);
CloseFile(nvFileHandle);

endif;

//如果找到Autoexec.bat,加上路径
if BatchSetFileName(szBatFile) = 0 then
szKey = "PATH";
//把Oracle路径加到Autoexec.bat中
EzBatchAddPath(szKey, szPath1, '', BEFORE);


//把BDE路径加到Autoexec.bat中
EzBatchAddPath(szKey, szPath2, '', BEFORE);

endif;

case IS_WINDOWSNT: // OS: Windows NT
//把路径加到环境变量中
szKey = "SYSTEM//CurrentControlSet//Control//Session Manager//Environment";
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
RegDBSetKeyValueEx(szKey, "Fame", REGDB_STRING, szPath1, -1);
RegDBSetKeyValueEx(szKey, "Fame", REGDB_STRING, szPath2, -1);
szEnv = "Environment";

pEnv = &amp;szEnv;
SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, pEnv);

endswitch;
endif;
end;
 
后面一个问题我已用一种笨办法搞定,希望大家多谈谈前一个问题。
 
没有人会吗?
 
这个问题我已经搞定了,先用GetEnvVar取得系统路径,然后用StrFind查找就可以了。
请版主帮我收会分数吧。
 
如果操作系统是win2k还需要将
Autoexec.bat文件由隐藏转为非隐藏文件
 
时间太长,发分了。
 
顶部