对!define / date“ NOW”使用特定的strftime格式时,无法打开Outfile错误NSIS 3.0.5

问题描述

我有以下定义:!define /date Now "%Y-%b-%d_%H-%M-%s" 当这样创建输出文件时:OutFile "..\my_app_name_Setup-x64_${Now}_Build_${__COUNTER__}.exe" 编译成功。但是,当我将格式更改为:!define /date Now "%Y-%b-%d_%H:%M:%s"(有效的用小时,分钟和秒用冒号将连字符更改)时,它不再能成功编译。 (编译错误“最后无法打开Outfile”。)
两(2)个问题:

  1. 什么原因导致此错误
  2. 如何使用首选的strftime格式? (=用冒号表示HH:MM:SS)

也许安德斯(Anders)可以对此有所启发;)

添加2。按照https://nsis.sourceforge.io/mediawiki/index.php?title=Reference/!define&oldid=24774 tmy格式("%Y-%b-%d_%H:%M:%s"是正确的。(可能会贬值(?)

解决方法

冒号在Windows上的文件名中不合法。参见Naming Conventions: reserved characters

如果您在POSIX上进行编译,从理论上讲是合法的,但毫无意义,因为如果不重命名就无法执行安装程序。