Имя файла установки может быть получено из номера версии исполняемого файла?

Действительно ли возможно получить Настройки Inno, чтобы считать версию файла основного исполняемого файла и определить имя созданной установки к чему-то как "myapp_setup_1_0_3708_19805.exe"?

10
задан mghie 24 February 2010 в 22:20
поделиться

1 ответ

Вы должны быть в состоянии сделать это следующим образом:

(Я не пробовал это недавно, но это определенно работало в 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 и т.д. - это просто замена точек (.) в номере версии на символы подчеркивания (_), чтобы избежать проблем с программами, которые не могут справиться с большим количеством точек в имени файла.

21
ответ дан 3 December 2019 в 15:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: