我想使用单独的 INI 文件分发已编译的安装程序。安装程序将从提供给该特定客户端的 INI 文件加载配置(例如版本)。
我在与
ver.ini
相同的目录中有一个 Setup.exe
文件。它包含-
[Version]
Ver=0.0.11
我想像这样使用它-
#define AppVer ReadIni("ver.ini", "Version", "Ver", "unknown")
问题:Inno Setup 将
AppVer
显示为 unknown
,而不是 0.0.11
。
如果我对
ver.ini
文件使用硬编码文件路径,则它可以工作:
#define AppVer ReadIni("C:\Users\Admin\Desktop\ver.ini", "Version", "Ver", "unknown")
由于我要将安装程序分发给客户,因此我无法使用硬编码的文件路径。
如有任何帮助,我们将不胜感激!
您不能使用预处理器。预处理器在编译时执行。因此,即使您修复了路径问题(例如使用
SourcePath
预处理器变量),也无济于事,因为您将在 编译 安装程序的计算机上读取 INI 文件。不在安装程序执行的机器上。
脚本常量。使用GetIniString
函数读取INI文件,使用
src
常量引用源目录。
[Setup]
AppVersion={code:GetAppVersion}
[Code]
function GetAppVersion(Param: string): string;
var
IniPath: string;
begin
IniPath := ExpandConstant('{src}\ver.ini');
Result := GetIniString('Version', 'Ver', 'Unknown', IniPath);
end;
function GetAppVersion(Param: string): string;
var
IniPath: string;
begin
IniPath := ExpandConstant('{src}\ver.ini');
Result := GetIniString('Version', 'Ver', '', IniPath);
if Result = '' then RaiseException('Cannot find version');
end;