2016-02-15 6 views
1

Мне нужно увеличить версию установщика при каждой успешной сборке. Я добавил файл VBscript и вызвал его из события предварительной сборки. Но я не могу получить фактический результат. мой сценарий, как в:Auto Increment версия проекта установки

set a = wscript.arguments 
if a.count = 0 then wscript.quit 1 

'read and backup project file 
Set fso = CreateObject("Scripting.FileSystemObject") 
Set f = fso.OpenTextFile(a(0)) 
s = f.ReadAll 
f.Close 
fbak = a(0) & ".bak" 
if fso.fileexists(fbak) then fso.deletefile fbak 
fso.movefile a(0), fbak 

'find, increment and replace version number 
set re = new regexp 
re.global = true 
re.pattern = "(""ProductVersion"" = ""8:)(\d+(\.\d+)+)""" 
set m = re.execute(s) 
v = m(0).submatches(1) 
v1 = split(v, ".") 
v1(ubound(v1)) = v1(ubound(v1)) + 1 
vnew = join(v1, ".") 
'msgbox v & " --> " & vnew 
s = re.replace(s, "$1" & vnew & """") 

'replace ProductCode 
re.pattern = "(""ProductCode"" = ""8:)(\{.+\})""" 
guid = CreateObject("Scriptlet.TypeLib").Guid 
guid = left(guid, len(guid) - 2) 
s = re.replace(s, "$1" & guid & """") 

'replace PackageCode 
re.pattern = "(""PackageCode"" = ""8:)(\{.+\})""" 
guid = CreateObject("Scriptlet.TypeLib").Guid 
guid = left(guid, len(guid) - 2) 
s = re.replace(s, "$1" & guid & """") 

'write project file 
fnew = a(0) 
set f = fso.CreateTextfile(fnew, true) 
f.write(s) 
f.close 

и мой Pre-сборки события как C: \ Projects \ VersionProject \ myscript.vbs "$ (ProjectDir) VersionProject.Installer.vdproj" .Any оцененная помощь.

+0

Почему это помечено 'C#'? – MickyD

ответ

0

Взгляните на this. Этот плагин позволяет вам установить различные варианты номера версии в вашем проекте.

И это именно то, что вам нужно, автоматически увеличивайте номер версии на каждой сборке. Я использовал это в течение многих лет и никогда не испытывал проблем с этим.

Update:

Этот плагин работает только, если ваш проект имеет AssemblyInfo.cs

+0

Но полезно ли это для проектов установщика. Pls поможет мне как использовать для проекта установки – user22197

+0

Я пока не использовал проекты установщика. Имеет ли этот тип проекта 'AssemblyInfo.cs'? – JoeJoe87577

+0

Нет, у него нет AssemblyInfo.cs – user22197

1

Вы должны были бы пойти в файл vdproj и найти строку вида «ProductVersion» = «8: 1.0.0 "
и смените строку с (скажем) 1.0.0 на 1.0.1.

Однако у вас могут возникнуть проблемы с обновлениями, если это все, что вы меняете. Обратите внимание, что когда вы увеличиваете ProductVersion в проекте установки, он предлагает изменить ProductCode, а также будет изменять PackageCode файла MSI. Таким образом, безопасное изменение версии включает в себя все эти вещи. Например, если вы измените только версию и попытаетесь переустановить MSI, она не сработает с «Другой версией этого продукта уже установлен». Если вы не знаете об этих вещах, я предлагаю вам ознакомиться с тем, как ProductCode, UpgradeCode, ProductVersion взаимодействует вместе с RemovePreviousVersions, и имейте в виду, что для каждого нового MSI необходим новый PackageCode.