Я не хотел использовать метод .exe выше, и у меня было немного свободного времени, поэтому я начал копаться. Я использую VS 2008 на Windows 7 64 бит. Когда у меня есть проект установки, давайте назовем его MySetup. Все детали проекта можно найти в файле $ (ProjectDir) MySetup.vdproj.
Версия продукта находится в отдельной строке в этом файле в форме
ProductVersion="8:1.0.0"
Теперь в проекте установки есть событие после сборки. Если вы выберете проект установки и нажмете F4, вы получите совершенно другой набор свойств, чем при щелчке правой кнопкой мыши и выборе свойств. После нажатия F4 вы увидите, что одним из них является PostBuildEvent. Снова при условии, что проект установки называется MySetup, ниже будет указано имя MSI, включающее дату и версию
.
set datevar=%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%
findstr /v PostBuildEvent $(ProjectDir)MySetup.vdproj | findstr ProductVersion >$(ProjectDir)version.txt
set /p var=<$(ProjectDir)version.txt
set var=%var:"=%
set var=%var: =%
set var=%var:.=_%
for /f "tokens=1,2 delims=:" %%i in ("%var%") do @echo %%j >$(ProjectDir)version.txt
set /p realvar=<$(ProjectDir)version.txt
rename "$(ProjectDir)$(Configuration)\MySetup.msi" "MySetup-%datevar%-%realvar%.msi"
Я проведу вас через все вышеописанное.
datevar - текущая дата в форме ГГГГММДД.
Строка findstr проходит через MySetup.vdproj, удаляет любую строку с PostBuildEvent, затем возвращает единственную оставшуюся строку с productVersion и выводит ее в файл.
Затем мы удаляем кавычки, пробелы, превращаем точки в подчеркивания.
Строка for разбивает оставшуюся строку на двоеточие, занимает вторую часть и снова выводит ее в файл.
Затем мы устанавливаем для realvar значение, оставленное в файле, и переименовываем MySetup.msi, чтобы включить дату и версию.
Итак, учитывая ProductVersion выше, если бы это было 27 марта 2012 года, файл был бы переименован в
MySetup-20120327-1_0_0.msi
Очевидно, что с помощью этого метода вы можете получить ЛЮБЫЕ переменные в файле vdproj и включить их в имя выходного файла, и нам не нужно создавать никаких дополнительных программ .exe для этого.
НТН