constants - 在 Inno Setup 中使用源文件名中的常量

标签 constants inno-setup

我想在 Inno Setup 安装中包含来自 program files\my org\my app 的文件。该文件实际上位于 c:\program files (x86)\my org\my app 中,但我希望能够在 32 位和 64 位版本的 Windows 上编译安装程序,因此我想使用一个常量作为源文件名:

[Files]
Source: "{pf}\my org\my app\myapp.exe"; DestDir: "{app}"

Inno setup 只是按字面意思处理 {pf},我收到一条消息,说它找不到文件“{pf}\my org\my app\myapp.exe”

在帮助中,它说如果使用外部标志,则只能对源文件使用常量,但这仅适用于目标系统上已存在的文件。

还有另一个类似的问题建议您可以在源文件名中使用常量,但我无法让它工作:

How to use parent of a directory in a Source parameter of the Files section?

我也尝试过设置:

[Setup]
SourceDir={pf}\my org\my app 

但编译器再次将 {pf} 视为文字文本而不是替换它,这与替换常量的 DefaultDirName 不同。

我正在使用 Inno Setup 版本 5.5.3 (a)。

有什么想法吗?

最佳答案

您可以使用预处理器来实现这一点。它没有所有这些有用的目录常量,但它可以从环境变量中读取,这也为您提供了大多数系统路径名。在您的示例中:

[Setup]
#define ProgramFiles GetEnv("ProgramFiles")
SourceDir={#ProgramFiles}\my org\my app

特别注意程序文件目录的位数。其他目录(例如 AppData)问题较少。

关于constants - 在 Inno Setup 中使用源文件名中的常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21231964/

相关文章:

rust - Rust 常量表达式可以使用 Default 之类的特性吗?

inno-setup - 创新设置: is it a script based deployment program?

inno-setup - 使用 inno-setup 在用户 AppData 文件夹中安装文件

c++ - C++ 中 const 到非 const 的转换

c++ - 在构造函数中初始化常量字符串? C++

c# - 如果有的话,我们什么时候应该使用 const?

inno-setup - "Unknown Identifier ' FileOpen '"尝试在 Inno Setup 代码中检测锁定文件时

javascript - 使用 Heroku 以编程方式更改全局变量?

xml - Inno Setup - XML 编辑 XPath 请求失败,错误代码为 "NIL Interface Exception at runtime"

java - 从使用 Inno Setup 和 maven 创建的 native javafx 应用程序写入控制台