Как синхронизировать номер версии установщика с номерами версий установленных сборок? - PullRequest
23 голосов
/ 08 января 2009

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

Когда я выпускаю релиз, я создаю новую версию установщика. В отличие от всех сборок, которые могут получить свои номера версий из общего файла SolutionInfo.cs, номер версии установщика, как я могу сказать, не является свойством сборки. Так что мой процесс выпуска включает ручное продвижение номера версии в проекте установки.

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

Есть идеи?

Изменить:

Просто для пояснения, это проект установки и развертывания Visual Studio, о котором я говорю.

Ответы [ 3 ]

20 голосов
/ 08 января 2009

CodeProject имеет скрипт для установки номера версии MSI-файла, который вы можете запустить на предварительно собранном шаге проекта установки. Вы найдете это здесь:

http://www.codeproject.com/KB/install/NewSetupVersion.aspx

Подробнее

Имейте в виду, что с установщиком Windows все немного сложнее. Файлы MSI (такие, которые вы создаете с помощью проекта установки и развертывания VS) имеют не только номер версии, но и код продукта, который является значением GUID. Этот код продукта используется установщиком Windows для уникальной идентификации вашего продукта, например, в Панели управления -> Установка и удаление программ, в которых вы можете удалить или восстановить продукт.

Однако при изменении номера версии MSI этот код продукта также необходимо изменить в ряде случаев. Технология MSI плохо документирована, но некоторые рекомендации по изменению кода продукта можно найти на следующей странице MSDN: http://msdn.microsoft.com/en-us/library/aa367850(VS.85).aspx.

В своих проектах я всегда генерирую новый код продукта для каждой новой версии. Сценарий в CodeProject также изменит код продукта для вас.

И еще одна вещь: установщик Windows проверяет только первые три позиции номера версии afaik, все, что находится на четвертом месте, будет игнорироваться, т.е. 2.3.0.1234 считается равным 2.3.0.5678. ( ProductVersion ) * * тысяча двадцать-один

(Существует соответствующая статья о CodeProject, которая также может быть вам интересна: http://www.codeproject.com/KB/install/VersionVDProj.aspx)

3 голосов
/ 08 января 2009

Это будет зависеть от используемого вами инсталлятора.

Мы используем TFS Team Build и WiX v3 . У меня есть пользовательская задача сборки, которая увеличивает номер сборки в Team build (например, 5.0.0.X), затем этот номер версии помещается в общее поле AssemblyInfo.cs AssemblyFileVersion. Он также передается MSBuild нашим решениям / проектам как свойство, которое затем передается в WiX и используется также для обновления версии установщика.

Возможно, нам когда-нибудь тоже понадобится улучшить версию сборки, но сейчас это работает довольно хорошо для нас.

0 голосов
/ 13 июня 2014

Я использую обходной путь для проектов установки VS2010 (.MSI + setup.exe). Откройте .vdproj в Блокноте и отредактируйте значение назначения ProductVersion (3.2.1 в приведенном ниже примере). Сохраните файл и запустите VS2010, дважды щелкнув файл .vdproj.

    "Product"
    {
    "Name" = "8:Microsoft Visual Studio"
    "ProductName" = "..."
...
    "ProductVersion" = "8:3.2.1"
    "Manufacturer" = "..."
...
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...