我正在使用Inno安装程序为我正在处理的项目创建一个安装程序,我需要它来设置java环境变量,这样当它们运行cmd时,它们不会得到java not found错误,或类似的东西.
我找到了一些与Inno Setup和设置环境变量相关的帖子,但有没有人知道这个实例特有的东西?
我正在 Windows 中编写一个批处理文件来运行安装后脚本,需要做的一件事是在系统路径中添加一个目录。
该脚本正在运行,它执行以下操作:
setx Path "%PATH%;c:\path\to\add" -m
这是正确设置路径,但如果用户重新安装程序,此脚本可能会多次运行。
我想搜索字符串,c:\path\to\add所以我不会一遍又一遍地向系统路径添加相同的路径。这在带有 的 Linux 中非常简单sed,但我不知道 Windows 中的命令是什么。我找到了findstr,但这似乎只适用于文件。
在不安装额外软件的情况下,这在 Windows 中是可能的吗?
编辑:
我正在使用 Inno Setup 创建安装可执行文件。
我写了一个Inno Setup脚本,它安装程序并用安装程序PATH的目录更新
环境变量.
我想更新PATH环境变量,以恢复其先前的安装状态.
安装程序运行时,用户会选择安装路径.
这是脚本,它使用如何在运行Inno Setup Installer时修改PATH环境变量中的代码?
[Setup]
AppName=Pandoc_x64
AppVersion=1.16.0.2
AppPublisher=Hitachi Systems CBT
DefaultDirName={pf64}\pandoc
UninstallDisplayName=Pandoc_x64
DisableDirPage=no
UninstallFilesDir={app}\uninstall
[Files]
Source: "pandoc.exe"; DestDir: "{app}";
Source: "pandoc-citeproc.exe"; DestDir: "{app}";
[Setup]
ChangesEnvironment=yes
[Registry]
Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; \
ValueType: expandsz; ValueName: "PATH"; ValueData: "{olddata};{app}"; \
Check: NeedsAddPath('{app}')
Root: HKLM; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueName: "PATH"; ValueData: "{app}"; Flags: uninsdeletevalue
[Code]
function NeedsAddPath(Param: string): boolean;
var
OrigPath: string;
begin
if not RegQueryStringValue(HKEY_LOCAL_MACHINE,
'SYSTEM\CurrentControlSet\Control\Session Manager\Environment',
'Path', OrigPath)
then …Run Code Online (Sandbox Code Playgroud)