Inno Setup - #define 指令 - 如何使用先前定义的变量?

Posted

技术标签:

【中文标题】Inno Setup - #define 指令 - 如何使用先前定义的变量?【英文标题】:Inno Setup - #define directive - how to use previously defined variable? 【发布时间】:2011-12-17 20:37:36 【问题描述】:

我正在使用 Inno Setup 5.4.2 版。

我想定义要复制的文件的路径([Files] 部分中的 Source: 参数分为两部分,一个基本路径和子目录名称,用于特殊文件(如 .dll)。 我尝试了以下方法:

#define MyAppSetupDir "D:\MyApp\setup"
#define MyAppSetupQtDLLs #MyAppSetupDir"\DLLs"
[Files]
Source: #MyAppSetupDir\MyApp.exe; DestDir: app; Flags: ignoreversion
Source: #MyAppSetupDLLs\mstext35.dll; DestDir: app; Flags: ignoreversion

但我得到以下编译错误

[ISPP] Expression expected but opening brace ("") found.

我也尝试将大括号括在“”中,例如

#define MyAppSetupQtDLLs "#MyAppSetupDir\DLLs"

但这次我得到了

Error: Source file "D:\MyApp\setup\#MyAppSetupDir\DLLs\mstext35.dll" does not exist.

因此,ISSP 正确地替换了 MyAppSetupDir 变量,但随后再次放入了简单文本,就好像它没有识别指令一样。

我到处搜索,我已经找到了一个关于使用commonappdata 的discussion,但是我在文档和知识库中都找不到如何做到这一点。 我真的很感激一些提示,因为它看起来很接近,但没有找到正确的解决方案..

【问题讨论】:

【参考方案1】:
#define MyAppSetupDir "D:\MyApp\setup"
#define MyAppSetupQtDLLs MyAppSetupDir + "\DLLs"

【讨论】:

以上是关于Inno Setup - #define 指令 - 如何使用先前定义的变量?的主要内容,如果未能解决你的问题,请参考以下文章

inno setup判断是Windows系统版本(其实还是Delphi代码,还能检查域控制器和家庭版)

Inno Setup

Inno Setup 5 安装包制作!reg2iss,Inno Setup 问题。Inno Setup 怎么批量导入reg文件,(像nsis

inno setup 开机启动

inno setup 怎样检测程序已安装

Inno Setup CreateProcess 失败:代码 740(Inno Setup打包的程序提升为管理员权限)