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
。
有没有办法在运行时将环境变量分配给变量?然后编辑呢? 例如,客户端计算机在 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
。