Inno setup安装包中添加环境变量以及卸载时删除环境变量
来源:互联网 发布:unity3d 游戏模型提取 编辑:程序博客网 时间:2024/06/03 18:12
在Inno setup中安装时添加环境变量以及卸载时删除环境变量,需要注意的问题已经在文档中进行说明
// 设置环境变量函数
procedure SetEnv(aEnvName, aEnvValue: string; aIsInstall, aIsInsForAllUser: Boolean);
var
sOrgValue: string;
sFileName: string;
S1: AnsiString; //注意类型是AnsiString,不是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(s1), Uppercase(sOrgValue)) = 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 = ssInstall then //对于(ssInstall)这个变量可依据自身需要进行更改,帮助文档中有说明(也可是安装完成之后进行写入对应变量为ssDone)
begin
// 将{app}路径添加到path环境变量中
SetEnv('path',ExpandConstant('{app};'),true,true); //对于添加多个环境变量需要注意要添加分割符号";",否则系统会认为是一个
SetEnv('path',ExpandConstant('{app}\ddd'),true,true); //在这儿调用,一定在这儿调用,安装完无须重启,立即生效
end;
end;
// 卸载前删除环境变量
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
// 将{app}路径从path环境变量中删除
SetEnv('path',ExpandConstant('{app};'),false,true);
SetEnv('path',ExpandConstant('{app}\ddd'),false,true); //卸载时所需要删除的环境变量需要与所添加的变量一致,以免误删除
end;
另外关于Inno setup安装包的问题大家可以一起交流
- Inno setup安装包中添加环境变量以及卸载时删除环境变量
- Inno Setup Compiler卸载时删除注册表
- Inno Setup制作安装包
- INNO setup 制作安装包
- Windows安装包,Inno Setup
- Inno setup 制作安装包
- Inno Setup安装、卸载时判断是否程序正在运行
- Inno Setup安装、卸载时判断是否程序正在运行
- Inno Setup安装、卸载时判断是否程序正在运行
- Inno Setup安装、卸载时判断是否程序正在运行
- Inno setup制作安装包时向注册表中写安装后的路径
- inno setup 安装/卸载 弹出网页
- inno setup 安装/卸载 弹出网页
- inno setup 安装/卸载 弹出网页
- inno setup 安装/卸载 弹出网页
- Inno Setup 安装前卸载原程序
- Inno Setup命令行安装卸载参数
- linux centos中添加删除修改环境变量,设置java环境变量
- 泛型
- 【Unity 优化】Skinned-Mesh 能动态合并嘛?
- HDU6215【队列+双向链表维护】
- MVC+VUE.JS+MUSEUI
- javascript中this的四种用法
- Inno setup安装包中添加环境变量以及卸载时删除环境变量
- LIVE555再学习 -- OpenRTSP 源码分析
- android中添加自己的驱动
- Arduino使用蓝牙BLE模块
- xlistview配置
- 25匹马的角逐
- 在Java中提升函数以更好地“函数式”编程
- 【学习摘记】马士兵bbs初级版_课时3-4_执行sql文件,引入jar包
- 用pdf转cad转换器进行操作的简单步骤