自动化安装程序构建时的另一个好技巧是使用GetFileVersion
预处理器 (ISPP) 宏。这样,您就不必以硬编码形式(如 Tom's settings.txt
)复制(二进制)文件的版本号 - 安装程序编译器将以这种方式简单地从文件的版本资源中读取它。例如:
#define AppName "My App"
#define SrcApp "MyApp.exe"
#define FileVerStr GetFileVersion(SrcApp)
#define StripBuild(str VerStr) Copy(VerStr, 1, RPos(".", VerStr)-1)
#define AppVerStr StripBuild(FileVerStr)
[Setup]
AppName={#AppName}
AppVersion={#AppVerStr}
AppVerName={#AppName} {#AppVerStr}
UninstallDisplayName={#AppName} {#AppVerStr}
VersionInfoVersion={#FileVerStr}
VersionInfoTextVersion={#AppVerStr}
OutputBaseFilename=MyApp-{#FileVerStr}-setup
此外,您可以通过命令行开关将符号转发给编译器/d
,例如:
iscc.exe /dSpecialEdition ...
然后在ifdef
s 中使用这些来创建不同类型的安装程序(下面是愚蠢的示例):
[Registry]
#ifdef SpecialEdition
Root: HKLM; Subkey: Software\MyCompany\MyApp; ValueName: SpecialEdition; ValueType: dword; ValueData: 1 ...
#endif