Автоматически увеличивать и синхронизировать версию для продукта и загрузчика

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

Когда я собираю загрузчик, цель AfterBuild использует GetAssemblyIdentity для успешного получения автоматически сгенерированной версии MyApp, и выходной файл загрузчика правильно именуется с увеличенным номером версии, например, MyApp.1.0.5123.1352.exe

Но, когда я устанавливаю этот Bootstrapper, версия, которая отображается в программах добавления / удаления, всегда 1.0.0.0.

Я пытался использовать привязки в поле «Bootstrapper Bundle Version», но не могу заставить его прочитать версию MyApp.

Использование !(bind.packageVersion.MyApp) приводит к тому, что никогда не увеличивается 1.0.0.0.
Использование !(bind.assemblyName.MyApp) приводит к ошибкам сборки (неразрешенная переменная времени привязки).
Использование !(bind.FileVersion.filAAF013CA9B89B07C81031AE69884BF11) приводит к ошибкам сборки (неразрешенная переменная времени привязки). <- Имеет смысл, так как FileID существует в проекте Setup, а это проект Bootstrapper.

Что можно сделать, чтобы мой Bootstrapper Bundle имел ту же версию, что и MyApp, в который он упакован?

===== MyApp \ AssemblyInfo.cs = ====

[assembly: AssemblyVersion("1.0.*")] 
[assembly: AssemblyFileVersion("1.0.*")] 

===== Setup.wixproj =====

<Target Name="BeforeBuild">
  <PropertyGroup>
    <LinkerBaseInputPaths>..\MyApp\bin\$(Configuration)\</LinkerBaseInputPaths>
  </PropertyGroup>
  <HeatDirectory OutputFile="MyApp_Files.wxs" Directory="..\MyApp\bin\$(Configuration)\" DirectoryRefId="INSTALLLOCATION" ComponentGroupName="MyApp_Project" SuppressCom="true" SuppressFragments="true" SuppressRegistry="true" SuppressRootDirectory="true" AutoGenerateGuids="false" GenerateGuidsNow="true" ToolPath="$(WixToolPath)" Condition="'%(ProjectReference.PackageThisProject)'=='True'" />
</Target>

===== Bootstrapper.wixproj =====

<Target Name="AfterBuild">
    <GetAssemblyIdentity AssemblyFiles="..\MyApp\bin\$(Configuration)\MyApp.exe">
        <Output TaskParameter="Assemblies" ItemName="AssemblyVersion" />
    </GetAssemblyIdentity>
    <Copy SourceFiles=".\bin\$(Configuration)\$(OutputName).exe" DestinationFiles=".\bin\$(Configuration)\MyApp.%(AssemblyVersion.Version).exe" />
    <Delete Files=".\bin\$(Configuration)\$(OutputName).exe" />
</Target>

===== Bootstrapper \ Bundle.wxs =====

<Bundle Name="$(var.ProductName) Bootstrapper v!(bind.packageVersion.MyApp)" 
        Version="!(bind.packageVersion.MyApp)"
8
задан Ram 7 July 2015 в 17:49
поделиться