解决方法
你应该可以这样:
(我最近没有尝试过,但是当我以这种方式使用InnoSetup时,它肯定会在2007年得到回复,如果Inno的语法从那以后改变,可能需要稍微改动)
#define MainBinaryName "MyMainFile.exe" #define SetupBaseName "setup_mytool_" #define AppVersion GetFileVersion(AddBackslash(SourcePath) + MainBinaryName) #define AVF1 Copy(AppVersion,1,Pos(".",AppVersion) - 1) + "_" + Copy(AppVersion,AppVersion) + 1) #define AVF2 Copy(AVF1,AVF1 ) - 1) + "_" + Copy(AVF1,AVF1 ) + 1) #define AppVersionFile Copy(AVF2,AVF2 ) - 1) + "_" + Copy(AVF2,AVF2 ) + 1) [Setup] OutputBaseFilename={#SetupBaseName + AppVersionFile}
如果MyMainFile.exe是1.2.3.4版本,那么应该调用完成的安装程序setup_mytool_1_2_3_4.exe
AVF1,AVF2等的东西就在那里用下划线(_)替换版本号中的点(.),以避免在文件名中无法处理大量点的问题.