Я пытаюсь реализовать автоматическое управление версиями, чтобы при сборке моего 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)"