Installshield环境变量的追加与删除

本文介绍如何在安装包中自动添加或删除环境变量,确保不影响现有配置。提供了具体代码示例,涵盖安装时的追加与卸载时的精确删除,同时解决了Dos命令失效问题。

====== 环境变量的追加与删除 ======
====== 环境变量的添加或追加 ======

  * 问题:如何能在安装包中添加环境变量,而不用用户手动在我的电脑/属性/高级/环境变量中设置,特别是,如何能判断已有的环境变量,如Path,在不改变已有的环境变量的内容的基础上,进行追加呢?
  * 解决方案:添加环境变量时,可以通过注册表中相应位置写键值的方式完成:HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment.
首先判断Path是否存在,如果不存在,创建,如果存在,已有的内容进行追加。追加的方法参考如下代码:
function AddPath()   
 NUMBER nResult,nType,nSize,nvSize,nvType;
 STRING strResult,szkey,szNumName,szNumValue,nRootKey,szPath,szPath2;
        STRING TITLE, szFormat;
begin
  RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);    
  szkey="SYSTEM\\ControlSet001\\Control\\Session Manager\\Environment";
                // has no the key, then create the key
  if (RegDBKeyExist(szkey) < 0)then 
     if (RegDBCreateKeyEx(szkey, "") < 0) then
    MessageBox ("RegDBCreateKeyEx failed.", SEVERE);
          return FALSE;
    endif;
  endif;    
  //添加系统路径  
         RegDBGetKeyValueEx(szkey,"Path",nvType,szPath,nvSize);
        if szPath!="" then
           PathSet(szPath);
           if (PathAdd(TARGETDIR^"\\scratch\\bin", "", FULL, AFTER) < 0) then
                 MessageBox ("Unable to add to path buffer.", SEVERE);
                 abort;
           endif;
           PathGet(szPath);
           Disable(LOGGING);
            if (RegDBSetKeyValueEx(szkey,"Path",REGDB_STRING,szPath,-1) < 0) then
        MessageBox ("RegDBSetKeyValueEx failed.", SEVERE);
        return FALSE;
            endif;
             Enable(LOGGING);
         else
           szPath=TARGETDIR^"\\scratch\\bin";
  // Set a key name and a value associated with it.
   Disable(LOGGING);
    if (RegDBSetKeyValueEx(szkey,"Path",REGDB_STRING,szPath,-1) < 0) then
        MessageBox ("RegDBSetKeyValueEx failed.", SEVERE);
        return FALSE;
           endif;
           Enable(LOGGING);
         endif;     
    end;
====== 卸载时如何删除追加的环境变量的问题 ======
  * 问题:安装包卸载时,如何能不改变已有的环境变量的内容,只是删除追加的环境变量?
  * 解决方案:参考如下,特有的关键字删除即可,案参考以下代码片段,即可实现。
function DelPath()   
 NUMBER nResult,nType,nSize,nvSize,nvType;
 STRING strResult,szkey,szNumName,szNumValue,nRootKey,szPath,szPath2;
begin
  RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);    
  szkey="SYSTEM\\ControlSet001\\Control\\Session Manager\\Environment";
  //添加系统路径  
         RegDBGetKeyValueEx(szkey,"Path",nvType,szPath,nvSize); 
         if szPath!="" then
           PathSet (szPath);
           PathDelete ("scratch", PARTIAL);      
           endif; 
 end;
====== 追加方式的卸载问题 ======

问题:当卸载的时候,却发生了一件事情,那就是,原来系统已经有的环境变量Path也被自动删除了,这会影响到其他软件的使用。
解决方案:原来,installsheild会记录所做的操作在log信息中,卸载时,会自动进行清理动作。
那么如何才能避免呢?RegDBSetKeyValueEx函数调用之前,可以先Disable(LOGGING);
调用之后,在Enable(LOGGING); 即可解决这个问题。

====== Dos命令无法使用的问题 ======
  * 问题:所有的dos命令,如ping 不能使用了。
  * 解决方案:在网上查找,只找到问题,没有搜索到解决方案,于是,只能一一查看Help,发现RegDBSetKeyValueEx的第三个参数引来的问题,需要修改第三个参数为REGDB_STRING_ EXPAND,因为在XP下,path含有一个%SystemRoot%的相对路径,如果使用了REGDB_STRING,所有的dos命令将都不能使用,此时,在dos下输入path一看,该替换成绝对路径的地方都没有替换掉,IS程序里键值设置时候的类型问题,REGDB_STRING是不认识相对路径的,换成REGDB_STRING_ EXPAND就可以了。


 

内容概要:本文围绕“新型电力系统下多分布式电源接入配电网承载力评估方法”的研究,系统性地介绍了基于Matlab的仿真建模代码实现方案,旨在评估高比例分布式电源(如光伏、风电等)接入背景下配电网的接纳能力。研究融合了智能优化算法(如蜣螂优化、灰狼优化、遗传算法)、多目标优化、鲁棒优化及双层优化模型,结合潮流计算、稳定性分析故障仿真,构建了完整的承载力评估体系。文档不仅提供核心算法实现,还拓展至微电网调度、储能配置、电氢耦合系统、电动汽车协同等前沿方向,强调“复现+创新”相结合的科研路径,助力研究者快速掌握高水平论文复现技巧并激发原创思路。; 适合人群:具备电力系统、自动化或相关专业背景,熟悉Matlab/Simulink仿真环境,正在从事科研或工程应用的研究生及初级科研人员(工作1-3年);; 使用场景及目标:①复现高水平期刊中关于配电网承载力的优化模型;②开展高比例可再生能源接入下的配电网规划运行研究;③学习并应用智能优化算法解决复杂电力系统问题;④获取完整科研资源包以加速课题进展论文撰写; 阅读建议:建议读者关注公众号“荔枝科研社”获取网盘资源,下载全套代码模型文件,按照文档结构循序渐进学习,重点理解算法设计逻辑仿真建模细节,结合所提供的复现案例深化对优化模型工程应用场景的理解,提升科研效率创新能力。
内容概要:本文系统研究了综合能源系统中的容量配置运行调度问题,采用双层优化方法构建模型并通过Matlab代码实现求解。上层优化侧重于设备容量的科学配置,以降低投资成本并提升系统经济性;下层优化聚焦于多能源协同运行调度,综合考虑光伏、储能、电动汽车等多种能源形式的动态特性,旨在实现系统在不同运行工况下的能效最大化、运行可靠性低碳化目标。研究融合智能优化算法(如遗传算法、粒子群算法)电力系统建模技术,深入探讨了多能耦合、不确定性处理及复杂约束下的优化机制,并提供了完整的仿真案例代码资源,涵盖微电网调度、风光储协同、电动汽车接入等典型应用场景,形成了具有较强实用价值的科研技术体系。; 适合人群:具备电力系统分析、优化算法理论及Matlab编程基础的研究生、科研人员和工程技术人员,特别适用于从事综合能源系统规划、微电网运行、智能调度能源互联网等领域研究的专业人士。; 使用场景及目标:① 掌握双层优化在综合能源系统中的建模方法求解流程;② 利用所提供Matlab代码进行科研复现、算法改进系统仿真验证;③ 拓展应用于电动汽车集群调度、可再生能源消纳、多能互补系统优化等实际工程学术研究场景; 阅读建议:建议结合文档中列出的相关研究方向配套代码资源,按照主题分类循序渐进地学习,优先理解双层架构的设计逻辑上下层耦合机制,并借助提供的网盘资料开展仿真实验参数调试,以深化对优化模型算法实现的理解,提升科研创新能力。
【重要提示】本资源设置为0积分下载,若非0积分请勿轻易下载 亲爱的CSDN用户: 首先感谢你点进这个资源页面。我需要提前说明一个重要情况: 本资源原本已设置为“0积分下载”,即作者希望完全免费共享。但CSDN平台有时会根据文件的下载热度、文件大小、用户权限等因素,自动将部分资源的积分调整为非0数值(如1积分、2积分、5积分等)。这是平台系统的自动行为,而非作者本人的设定。 因此,如果你当前看到该资源的下载所需积分不是0(例如显示为1、2、3……),请谨慎决定是否下载。 如果你按照非0积分支付并下载后发现资源内容不符合预期、链接失效,或者实际上该资源本应是免费的,作者无法为此承担积分损失或退还操作。强烈建议:仅在页面显示为0积分时进行下载。 另外,本资源描述中并未直接提供具体的下载地址或外部链接,因为它本身是一个通过CSDN官方上传通道提交的文件/内容包。如果你看到描述中没有外部网盘地址,这是正常的——资源文件应通过CSDN内置的“下载”按钮获取。若因平台积分显示异常导致你支付了积分,请优先联系CSDN客服咨询积分退还政策,作者没有权限修改平台自动设定的积分值。 感谢你的理解支持。技术分享本应开放,但受限于平台规则,特此提醒如上。祝学习进步!
【重要提示】本资源设置为0积分下载,若非0积分请勿轻易下载 亲爱的CSDN用户: 首先感谢你点进这个资源页面。我需要提前说明一个重要情况: 本资源原本已设置为“0积分下载”,即作者希望完全免费共享。但CSDN平台有时会根据文件的下载热度、文件大小、用户权限等因素,自动将部分资源的积分调整为非0数值(如1积分、2积分、5积分等)。这是平台系统的自动行为,而非作者本人的设定。 因此,如果你当前看到该资源的下载所需积分不是0(例如显示为1、2、3……),请谨慎决定是否下载。 如果你按照非0积分支付并下载后发现资源内容不符合预期、链接失效,或者实际上该资源本应是免费的,作者无法为此承担积分损失或退还操作。强烈建议:仅在页面显示为0积分时进行下载。 另外,本资源描述中并未直接提供具体的下载地址或外部链接,因为它本身是一个通过CSDN官方上传通道提交的文件/内容包。如果你看到描述中没有外部网盘地址,这是正常的——资源文件应通过CSDN内置的“下载”按钮获取。若因平台积分显示异常导致你支付了积分,请优先联系CSDN客服咨询积分退还政策,作者没有权限修改平台自动设定的积分值。 感谢你的理解支持。技术分享本应开放,但受限于平台规则,特此提醒如上。祝学习进步!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值