Inno setup 解析相对于另一文件夹中包含的.iss文件的文件路径
我正在使用Inno setup 解析相对于另一文件夹中包含的.iss文件的文件路径,inno-setup,Inno Setup,我正在使用#include预处理器指令来包含包含驱动程序安装的独立组件的其他.iss文件 [Files] #include "subfolder\issComponent.iss" 和issComponent.iss从其自身的相对路径安装驱动程序 [Files] Source: "Driver\Driver.exe"; DestDir: "{tmp}"; Flags: ignoreversion deleteafterinstall
#include
预处理器指令来包含包含驱动程序安装的独立组件的其他.iss
文件
[Files]
#include "subfolder\issComponent.iss"
和issComponent.iss
从其自身的相对路径安装驱动程序
[Files]
Source: "Driver\Driver.exe"; DestDir: "{tmp}"; Flags: ignoreversion deleteafterinstall
[Run]
Filename: "{tmp}\Driver.exe";
当我尝试构建主/调用脚本时,Driver.exe
的相对路径不起作用,因为从主/调用脚本的位置引用了相对路径
issComponent.iss
的路径解析为
.\Driver\Driver.exe
而不是
.\subfolder\Driver\Driver.exe
因为include语句直接包含file语句,而不是从自己的路径编译它。这就是导致错误的原因。我想知道是否有一种方法可以正确使用两个位置的相对路径。预处理器解释#include
。[文件]
(和其他部分)由编译器解释。这些是相互了解的独立组件。就像在C/C++中一样。预处理器将issComponent.iss
合并到主.iss
文件中,如下所示:
[Files]
[Files]
Source: "Driver\Driver.exe"; DestDir: "{tmp}"; Flags: ignoreversion deleteafterinstall
[Run]
Filename: "{tmp}\Driver.exe";
编译器甚至不知道这些行原来在不同的文件中,更不用说在不同的文件夹中了
您可以使用一些预处理器功能来实现所需的功能。例如,
\uuu路径文件名
,它解析为引用它的.iss
文件的路径
#define PathToSelf ExtractFileDir(__PATHFILENAME__)
Source: "{#PathToSelf}\MyProg.exe"; DestDir: "{app}"
这将导致最终的.iss
脚本,如:
[Files]
[Files]
Source: "C:\full\path\to\subfolder\Driver\Driver.exe"; DestDir: "{tmp}"; Flags: ignoreversion deleteafterinstall
[Run]
Filename: "{tmp}\Driver.exe";
#include
由预处理器解释。[文件]
(和其他部分)由编译器解释。这些是相互了解的独立组件。就像在C/C++中一样。预处理器将issComponent.iss
合并到主.iss
文件中,如下所示:
[Files]
[Files]
Source: "Driver\Driver.exe"; DestDir: "{tmp}"; Flags: ignoreversion deleteafterinstall
[Run]
Filename: "{tmp}\Driver.exe";
编译器甚至不知道这些行原来在不同的文件中,更不用说在不同的文件夹中了
您可以使用一些预处理器功能来实现所需的功能。例如,
\uuu路径文件名
,它解析为引用它的.iss
文件的路径
#define PathToSelf ExtractFileDir(__PATHFILENAME__)
Source: "{#PathToSelf}\MyProg.exe"; DestDir: "{app}"
这将导致最终的.iss
脚本,如:
[Files]
[Files]
Source: "C:\full\path\to\subfolder\Driver\Driver.exe"; DestDir: "{tmp}"; Flags: ignoreversion deleteafterinstall
[Run]
Filename: "{tmp}\Driver.exe";
这非常有效,非常感谢您的帮助!这非常有效,非常感谢您的帮助!