Inno setup 使用Inno安装程序获取环境变量

Inno setup 使用Inno安装程序获取环境变量,inno-setup,Inno Setup,我需要向用户提供文件的更新版本 我让用户可以选择在任何地方安装原始软件 现在要进行更新,我需要PATH系统变量来知道他们在哪里安装了软件 我有以下代码: [Setup] #define path GetEnv('TEMPFILE') DefaultGroupName={#path} [Files] Source: "E:\folder \license.exe"; DestDir: "{app}\temp\installation_files\"; Flags: ignoreversion

我需要向用户提供文件的更新版本

我让用户可以选择在任何地方安装原始软件

现在要进行更新,我需要PATH系统变量来知道他们在哪里安装了软件

我有以下代码:

[Setup]
#define path GetEnv('TEMPFILE')
DefaultGroupName={#path}

[Files]
Source: "E:\folder \license.exe"; DestDir: "{app}\temp\installation_files\"; Flags: ignoreversion
但是代码在安装过程中给了我一个错误

有人知道为什么吗

也许我可以用不同的方式

有人能给我解释一下这个函数是如何工作的吗

function GetEnv(const EnvVar: String): String;

在以下链接中可以找到适合我的解决方案:


您的整个方法都是错误的。您无法知道在路径上找到的第一个
license.exe
是您的。如果您不是世界上唯一一个分发
许可证.exe的人,并且它恰好位于您之前的路径中,会发生什么情况?您的安装“更新了它”,并破坏了一些其他(可能对用户至关重要)应用程序。如果您要向应用程序分发更新,它应该在原始安装期间在注册表中记录其已安装文件夹,然后以后的更新可以通过读取该注册表值来定位它。抱歉,PATH只是一个示例,我正在调用一个只有一个PATH值的其他特定系统变量。“PATH”在Windows和Linux中都有特定的含义,所以这是一个不好用的示例。如果你需要帮助,请具体一点,不要半途而废。我们无法读懂你的心思来了解你真正的意思。:-)这仍然是错误的方法,国际海事组织;有一种文档化的方法可以在Windows注册表中记录应用程序的位置,以后的更新可以在其中找到它,Inno安装程序支持这样做(我想文档中甚至提到过它)。