Inno setup 使用Inno Setup在安装开始时添加注册表值

Inno setup 使用Inno Setup在安装开始时添加注册表值,inno-setup,Inno Setup,在inno安装程序开始安装之前,如何添加新的用户环境变量?新变量仅在安装过程中需要,而不是在安装之后 如果需要在安装开始前写入注册表,可以使用CurStepChanged事件函数。应该是这样的: procedure CurStepChanged(CurrentStep: TSetupStep); begin if CurrentStep = ssInstall then begin RegWriteStringValue(...) end; end; 您

在inno安装程序开始安装之前,如何添加新的用户环境变量?新变量仅在安装过程中需要,而不是在安装之后

如果需要在安装开始前写入注册表,可以使用
CurStepChanged
事件函数。应该是这样的:

procedure CurStepChanged(CurrentStep: TSetupStep);
begin
    if CurrentStep = ssInstall then
    begin
        RegWriteStringValue(...)
    end;
end;

您可以使用不同的RegWrite函数:RegWriteStringValue、RegWriteExpandStringValue、RegWriteMultiStringValue和其他函数。

欢迎使用堆栈溢出!在提问之前,请阅读和“”。请告诉我们有关您需要该变量的更多信息。尝试使用以下代码添加/扩展注册表值,它可以工作-但不是在安装开始时,而是在安装结束时:(
[registry]Root:HKLM;Subkey:“SYSTEM\CurrentControlSet\Control\Session Manager\Environment”;\ValueType:expandsz;ValueName:“Path”;ValueData:“{olddata};C:\foo”
在安装开始之前应该检查路径值-BeforeInstall标志对[Registry]不起作用?它究竟如何测试连接?@OP,这是因为
[Registry]
部分在安装后进行处理。对于可能出现的X/Y问题的Y部分,如何测试连接?是否确实需要更改环境?我知道您回答的是文字问题。但这是XY问题。OP需要为安装程序的某些超级进程设置变量。修改全局注册表我认为这不是一个好主意。好的,伙计们。我已经找到了一个解决我的特定问题的方法,但没有更改环境变量。@Bauer thx了解有关在安装开始之前更改注册表的解决方案。但是RegWriteStringValue对[HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Path]不起作用它有一种REG_EXPAND_SZ的类型。我试图在注册表的windows路径中添加一个新条目,并创建一个刷新环境,以便在批处理文件中使用依赖项psql.exe,但正如@Martin所述,这不是一个好主意。@Martin:也可以在
CurStepChanged
at
Curren中从注册表中删除更改tStep=ssPostInstall
CurrentStep=ssDone
。如果适合此任务,我还建议编写一个用户设置而不是全局设置。