Действительно ли возможно получить Настройки Inno, чтобы считать версию файла основного исполняемого файла и определить имя созданной установки к чему-то как "myapp_setup_1_0_3708_19805.exe"?
Вы должны быть в состоянии сделать это следующим образом:
(Я не пробовал это недавно, но это определенно работало в 2007 году, когда я использовал InnoSetup таким образом. Возможно, потребуются небольшие изменения, если синтаксис 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, Pos(".", AppVersion) + 1)
#define AVF2 Copy(AVF1, 1, Pos(".", AVF1 ) - 1) + "_" + Copy(AVF1 , Pos(".", AVF1 ) + 1)
#define AppVersionFile Copy(AVF2, 1, Pos(".", AVF2 ) - 1) + "_" + Copy(AVF2 , Pos(".", AVF2 ) + 1)
[Setup]
OutputBaseFilename={#SetupBaseName + AppVersionFile}
Если MyMainFile.exe был версии 1.2.3.4, то это должно вызвать готовую программу установки setup_mytool_1_2_3_4.exe
AVF1, AVF2 и т.д. - это просто замена точек (.) в номере версии на символы подчеркивания (_), чтобы избежать проблем с программами, которые не могут справиться с большим количеством точек в имени файла.