【发布时间】:2014-02-12 23:09:38
【问题描述】:
我有一个文件的更新版本需要提供给用户,
我让用户可以选择在任何地方安装原始软件,
所以现在要进行更新,我需要 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;
【问题讨论】:
-
你的整个方法都是错误的。您无法知道在 PATH 上找到的第一个
license.exe是您的。如果您不是世界上唯一分发license.exe的人,并且它恰好位于 PATH 中您之前的某个位置,会发生什么?您的安装“更新了它”并破坏了其他一些(可能对用户至关重要)应用程序。如果您要为您的应用分发更新,它应该在原始安装期间将其安装的文件夹记录在注册表中,然后以后的更新可以通过读取该注册表值来找到它。 -
抱歉,PATH 只是一个例子,我正在调用一个不同的特定系统变量,它只有一个路径值。
-
"PATH" 在 Windows 和 Linux 中都有特定的含义,所以它是一个不好用的例子。如果您需要帮助,请具体说明,不要随意编造。相反,我们无法读懂您的想法以了解您的真正意思。 :-) 这仍然是错误的方法,IMO;有一种记录在案的方法可以在 Windows 注册表中记录您的应用程序的位置,以便将来的更新可以找到它,并且 Inno Setup 支持这样做(我认为它甚至在某处的文档中提到过)。
标签: inno-setup