nsis - 如何在运行时设置 VIProductVersion

nsis - How to set VIProductVersion at runtime

我有一个包含文件版本(如 X.X.X.X)的 .ini 文件。
因此,我使用 ReadINIStr 来获取 'var' 格式的版本。
ReadINIStr [=11=] "C:\Users\a\Downloads\Info.ini" "Version" "VersionNumber"
StrCpy $varVersion [=12=]

以上代码导致 'varVersion' 的值存储在 ini 文件的版本中。

至此,我想要的值已经保存完好。

但是,用于 VIProductVersion 的值必须是使用 !define 的值。

  1. 不能使用 !define 以外的 variable?
  2. 如果变量不可用,我可以将特定条目的值存储在 !define 中的 ini 文件中吗?
  3. 我知道可以使用!define /file命令读取文件内容。然而,我打算只读取 ini 文件的条目值。

VIProductVersion 是存储在安装程序 .exe 中的属性,只能在编译时由 makensis 设置。

您可以使用任何预处理器指令,如 !define!searchparse 到 read/store 版本,但没有可用于读取 .ini 文件的指令。 !searchparse 如果 .ini 值名称在整个文件中仅使用一次,因为它不理解 .ini 部分,因此可以在紧要关头使用。