【问题标题】:Getting environment variable using Inno setup使用 Inno 设置获取环境变量
【发布时间】: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


【解决方案1】:

对我有用的解决方案可以在以下链接中找到:

Retrieve environment variable using RegQueryStringValue in Inno Setup

【讨论】:

    猜你喜欢
    • 2020-02-15
    • 1970-01-01
    • 2011-11-27
    • 2010-09-23
    • 1970-01-01
    • 2013-03-04
    • 2015-10-21
    • 2018-08-28
    相关资源
    最近更新 更多