Error[8]: Undefined offset: 5, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我有一个license.exe文件,我最后在我的设置代码中调用, 在正常工作之前,代码需要设置环境变量, 代码如下: [Registry]; set PATHRoot: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; \ ValueType: string; ValueName: 我有一个license.exe文件,我最后在我的设置代码中调用,

在正常工作之前,代码需要设置环境变量,

代码如下:

[Registry]; set PATHRoot: HKLM; Subkey: "SYstem\CurrentControlSet\Control\Session Manager\Environment"; \    ValueType: string; Valuename: "PATH"; ValueData: "{app}"[Setup]; Tell windows Explorer to reload the environmentChangesEnvironment=yes[Run]filename: "{app}\temp\installation_files\license.exe";

这里代码执行,但找不到正确的路径.

当我检查系统环境变量时,它设置正确,

当我手动运行license.exe代码后,它可以正常工作并查看环境变量.

有人能告诉我如何解决这个问题吗?

或者如何延迟[Run]部分直到系统识别出环境变量?

解决方法 为[Run]部分执行条目而创建的进程继承了其父进程的环境块,即安装程序本身.因此,您必须将环境变量设置为安装程序,并将其继承到已执行的应用程序.如何做到这一点如下面的脚本所示:
[Run]filename: "{app}\temp\installation_files\license.exe"; BeforeInstall: SetEnvPath[Code]#ifdef UNICODE  #define AW "W"#else  #define AW "A"#endiffunction SetEnvironmentvariable(lpname: string; lpValue: string): BOol;  external 'SetEnvironmentvariable{#AW}@kernel32.dll stdcall';procedure SetEnvPath;begin  if not SetEnvironmentvariable('PATH',ExpandConstant('{app}')) then    MsgBox(SysErrorMessage(DLLGetLastError),mbError,MB_OK);end;

以前的答案通知系统的其他部分变量变化:

正如@Jerry在他的评论中指出的那样,在处理[Run]部分后会执行有关环境变化的通知.实际上,安装程序执行了one of the last things.

因此,要在处理[Run]部分之前通知系统有关环境更改,您需要有一个解决方法.我重写了从Inno安装代码到脚本的RefreshEnvironment程序.如果将ChangesEnvironment指令设置为yes,则它与执行的功能相同.

在以下脚本中,我删除了ChangesEnvironment指令,并从注册表项的AfterInstall参数函数添加了RefreshEnvironment过程的执行:

[Registry]Root: HKLM; Subkey: "SYstem\CurrentControlSet\Control\Session Manager\Environment"; \    ValueType: string; Valuename: "PATH"; ValueData: "{app}"; \    AfterInstall: RefreshEnvironment;[Run]filename: "{app}\temp\installation_files\license.exe";[Code]const  SMTO_ABORTIFHUNG = 2;  WM_WININICHANGE = [+++]1A;  WM_SETTINGCHANGE = WM_WININICHANGE;type  WParaM = UINT_PTR;  LParaM = INT_PTR;  LRESulT = INT_PTR;function SendTextMessageTimeout(hWnd: HWND; Msg: UINT;  wParam: WParaM; lParam: PAnsiChar; fuFlags: UINT;  uTimeout: UINT; out lpDWResult: DWORD): LRESulT;  external 'SendMessageTimeoutA@user32.dll stdcall';  procedure RefreshEnvironment;var  S: AnsiString;  MsgResult: DWORD;begin  S := 'Environment';  SendTextMessageTimeout(HWND_broADCAST,WM_SETTINGCHANGE,PAnsiChar(S),SMTO_ABORTIFHUNG,5000,MsgResult);end;
总结

以上是内存溢出为你收集整理的环境变量 – Inno Setup中[Run]程序无法识别[不可用]环境变量全部内容,希望文章能够帮你解决环境变量 – Inno Setup中[Run]程序无法识别[不可用]环境变量所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
环境变量 – Inno Setup中[Run]程序无法识别[不可用]环境变量_语言综合_内存溢出

环境变量 – Inno Setup中[Run]程序无法识别[不可用]环境变量

环境变量 – Inno Setup中[Run]程序无法识别[不可用]环境变量,第1张

概述我有一个license.exe文件,我最后在我的设置代码中调用, 在正常工作之前,代码需要设置环境变量, 代码如下: [Registry]; set PATHRoot: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; \ ValueType: string; ValueName: 我有一个license.exe文件,我最后在我的设置代码中调用,

在正常工作之前,代码需要设置环境变量,

代码如下:

[Registry]; set PATHRoot: HKLM; Subkey: "SYstem\CurrentControlSet\Control\Session Manager\Environment"; \    ValueType: string; Valuename: "PATH"; ValueData: "{app}"[Setup]; Tell windows Explorer to reload the environmentChangesEnvironment=yes[Run]filename: "{app}\temp\installation_files\license.exe";

这里代码执行,但找不到正确的路径.

当我检查系统环境变量时,它设置正确,

当我手动运行license.exe代码后,它可以正常工作并查看环境变量.

有人能告诉我如何解决这个问题吗?

或者如何延迟[Run]部分直到系统识别出环境变量?

解决方法 为[Run]部分执行条目而创建的进程继承了其父进程的环境块,即安装程序本身.因此,您必须将环境变量设置为安装程序,并将其继承到已执行的应用程序.如何做到这一点如下面的脚本所示:
[Run]filename: "{app}\temp\installation_files\license.exe"; BeforeInstall: SetEnvPath[Code]#ifdef UNICODE  #define AW "W"#else  #define AW "A"#endiffunction SetEnvironmentvariable(lpname: string; lpValue: string): BOol;  external 'SetEnvironmentvariable{#AW}@kernel32.dll stdcall';procedure SetEnvPath;begin  if not SetEnvironmentvariable('PATH',ExpandConstant('{app}')) then    MsgBox(SysErrorMessage(DLLGetLastError),mbError,MB_OK);end;

以前的答案通知系统的其他部分变量变化:

正如@Jerry在他的评论中指出的那样,在处理[Run]部分后会执行有关环境变化的通知.实际上,安装程序执行了one of the last things.

因此,要在处理[Run]部分之前通知系统有关环境更改,您需要有一个解决方法.我重写了从Inno安装代码到脚本的RefreshEnvironment程序.如果将ChangesEnvironment指令设置为yes,则它与执行的功能相同.

在以下脚本中,我删除了ChangesEnvironment指令,并从注册表项的AfterInstall参数函数添加了RefreshEnvironment过程的执行:

[Registry]Root: HKLM; Subkey: "SYstem\CurrentControlSet\Control\Session Manager\Environment"; \    ValueType: string; Valuename: "PATH"; ValueData: "{app}"; \    AfterInstall: RefreshEnvironment;[Run]filename: "{app}\temp\installation_files\license.exe";[Code]const  SMTO_ABORTIFHUNG = 2;  WM_WININICHANGE = 1A;  WM_SETTINGCHANGE = WM_WININICHANGE;type  WParaM = UINT_PTR;  LParaM = INT_PTR;  LRESulT = INT_PTR;function SendTextMessageTimeout(hWnd: HWND; Msg: UINT;  wParam: WParaM; lParam: PAnsiChar; fuFlags: UINT;  uTimeout: UINT; out lpDWResult: DWORD): LRESulT;  external 'SendMessageTimeoutA@user32.dll stdcall';  procedure RefreshEnvironment;var  S: AnsiString;  MsgResult: DWORD;begin  S := 'Environment';  SendTextMessageTimeout(HWND_broADCAST,WM_SETTINGCHANGE,PAnsiChar(S),SMTO_ABORTIFHUNG,5000,MsgResult);end;
总结

以上是内存溢出为你收集整理的环境变量 – Inno Setup中[Run]程序无法识别[不可用]环境变量全部内容,希望文章能够帮你解决环境变量 – Inno Setup中[Run]程序无法识别[不可用]环境变量所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1278846.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存