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
ます。
パッケージ化する MyApp と同じバージョンの Bootstrapper Bundle を取得するにはどうすればよいですか?
=====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>
=====ブートストラップ\Bundle.wxs=====
<Bundle Name="$(var.ProductName) Bootstrapper v!(bind.packageVersion.MyApp)"
Version="!(bind.packageVersion.MyApp)"