Inno 安装程序 - 如何在安装过程中检索环境变量?

Inno installer - How to retrieve environment variables during install?

有没有办法在运行时将环境变量分配给变量?然后编辑呢? 例如,客户端计算机在 c:\Company\CoolProgram 处安装了一个程序,该文件夹位置位于名为 %InstallLocation% 的变量中。所以如果你回显 %InstallLocation% 你会得到 c:\Company\CoolProgram

我想在 c:\Company 中安装一个插件。这样 CoolProgram 和 PlugIn 将在 c:\Company 中并排放置。我读到这可以通过定义一个变量并将 %installLocation% 分配给它,然后从变量中删除 \CoolProgram 来完成。例如:

#define PluginLocation GetEnv('InstallLocation')

#define PluginLocation2 StringChange(PluginLocation, "\CoolProgram ", "")

所以,PluginLocation2 = c:\Company,这很好。除了这是在编译期间进行的。构建机器没有这个环境变量,而且并非所有客户端都将具有相同的安装位置。因此 %InstallLocation% 实际上只是空的,因此 PluginLocation 和 PluginLocation2 也是空的。

所以我尝试将变量定义向下移动到 [Setup] 中,希望在客户端运行时能够查找环境变量。那似乎没有用。我也尝试进入 [Files],因为我有文件要移动到新文件夹中,但 [Files] 似乎也在编译期间。

我觉得

procedure Test ()  ;
begin
  MsgBox(ExtractFileDir(ExpandConstant( '{app}' ) ) , mbConfirmation, MB_YESNO ) ;      
end;

就是您要找的。

ExpandConstant( '{app}' ) 将 return 应用程序的安装位置。

并且:ExtractFileDir 将从 c:\Company\CoolProgram 得到 c:\Company