info 环境变量
来源:互联网 发布:java图片转base64 编辑:程序博客网 时间:2024/05/20 03:05
Inno Setup添加Path变量
在[setup]段添加
ChangesEnvironment=true
在[Code]段中添加
procedure SetEnv(aEnvName, aEnvValue: string; aIsInstall, aIsInsForAllUser: Boolean);//设置环境变量函数
var
sOrgValue: string;
S1, sFileName, sInsFlag: string;
bRetValue, bInsForAllUser: Boolean;
SL: TStringList;
x: integer;
begin
bInsForAllUser := aIsInsForAllUser;
if UsingWinNT then
begin
if bInsForAllUser then
bRetValue := RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SYSTEM/CurrentControlSet/Control/Session Manager/Environment', aEnvName, sOrgValue)
else
bRetValue := RegQueryStringValue(HKEY_CURRENT_USER, 'Environment', aEnvName, sOrgValue)
sOrgValue := Trim(sOrgValue);
begin
S1 := aEnvValue;
if pos(Uppercase(sOrgValue), Uppercase(s1)) = 0 then //还没有加入
begin
if aIsInstall then
begin
x := Length(sOrgValue);
if (x > 0) and (StringOfChar(sOrgValue[x], 1) <> ';') then
sOrgValue := sOrgValue + ';';
sOrgValue := sOrgValue + S1;
end;
end else
begin
if not aIsInstall then
begin
StringChangeEx(sOrgValue, S1 + ';', '', True);
StringChangeEx(sOrgValue, S1, '', True);
end;
end;
if bInsForAllUser then
RegWriteStringValue(HKEY_LOCAL_MACHINE, 'SYSTEM/CurrentControlSet/Control/Session Manager/Environment', aEnvName, sOrgValue)
else
begin
if (not aIsInstall) and (Trim(sOrgValue) = '') then
RegDeleteValue(HKEY_CURRENT_USER, 'Environment', aEnvName)
else
RegWriteStringValue(HKEY_CURRENT_USER, 'Environment', aEnvName, sOrgValue);
end;
end;
end else //非NT 系统,如Win98
begin
SL := TStringList.Create;
try
sFileName := ExpandConstant('{sd}/autoexec.bat');
LoadStringFromFile(sFileName, S1);
SL.Text := s1;
s1 := '"' + aEnvValue + '"';
s1 := 'set '+aEnvName +'=%path%;' + s1 ;
bRetValue := False;
x := SL.IndexOf(s1);
if x = -1 then
begin
if aIsInstall then
begin
SL.Add(s1);
bRetValue := True;
end;
end else //还没添加
if not aIsInstall then
begin
SL.Delete(x);
bRetValue := True;
end;
if bRetValue then
SL.SaveToFile(sFileName);
finally
SL.free;
end;
end;
end;
procedure CurStepChanged(CurStep: TSetupStep);//添加环境变量
begin
if CurStep = ssPostInstall then
begin
SetEnv('path',ExpandConstant('{app}/Package/bpl;{app}/bin'),true,true); //在这儿调用,一定在这儿调用,安装完无须重启,立即生效
//SetEnv('path','{app}/bin',true,true);
end;
end;
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);//删除环境变量
begin
SetEnv('path',ExpandConstant('{app}/Package/bpl;{app}/bin'),false,true);
//SetEnv('path','{app}/bin',false,true);
end;
我用上.注册是正确的了.可是不能在setup.exe安装完之前生效.
我在code 调用了regsvr32 注册的时候.需要依赖PATH路径环境变量.头痛啊.55555555
发现一个问题:
if pos(Uppercase(sOrgValue), Uppercase(s1)) = 0 then //还没有加入
应该是:
if pos(Uppercase(s1), Uppercase(sOrgValue)) = 0 then //还没有加入
发现一个问题:
if pos(Uppercase(sOrgValue), Uppercase(s1)) = 0 then //还没有加入
应该是:
if pos(Uppercase(s1), Uppercase(sOrgValue)) = 0 then //还没有加入
两个参数反了
的确是写反了,原来的脚本添加变量没问题,但是删除不了!
- info 环境变量
- info
- info
- Info
- info
- info
- Info
- info
- info
- info
- Info
- INFO
- INFO
- 环境变量
- 环境变量
- 环境变量
- 环境变量
- 环境变量
- 索引及其优缺点
- 晶振常用尺寸,封装
- When to call Constructor and Destructor?
- 工作性质浅析
- 在本地数据库目录或系统数据库目录中已经存在数据库别名""的解决办法
- info 环境变量
- 【小阅读^大脑袋】0206 NO.315
- Inno Setup安装前检测程序是否安装
- 燕飞利仕(Infinity)
- 监视系统状态
- 2009年全球21大电信运营商排名
- 简单休眠之等待队列
- jquery 学习感想
- B&W(Bowers & Wilkins)