個々のファイルをコピーするための WXS ファイルの内容は次のとおりです。
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="MergeRedirectFolder">
<Component Id="owcF3EB3D7C133F5B48E5859309ABDC2EE0" Guid="5a6040ae-b91e-47b6-8438-d9cd47fb947a">
<File Id="owfF3EB3D7C133F5B48E5859309ABDC2EE0"
Source="$(var.SourceDir)\api-ms-win-core-console-l1-1-0.dll" KeyPath="yes" />
</Component>
<Component Id="owcB0E3C7251F136710A0F11E0C18525364" Guid="f80e6202-0436-d488-52cf-827e37483096">
<File Id="owfB0E3C7251F136710A0F11E0C18525364"
Source="$(var.SourceDir)\api-ms-win-core-datetime-l1-1-0.dll" KeyPath="yes" />
</Component>
<Component Id="owc4B0AD9DF281D253C1207D4E82DEB0DD2" Guid="4ac4edbd-2c6a-8aed-125e-11237a36e4f8">
<File Id="owf0E5D53A7E23AE08AF9D984ADC41AC589"
Source="$(var.SourceDir)\publish\sos_amd64_amd64_4.6.26628.05.dll" KeyPath="yes" />
ソースディレクトリを次のように定義しました
<?define SourceDir="..\..\Services\bin\Debug\netcoreapp2.1\win7-x64\"?>
各行に 1 つ指定する代わりに、すべてのファイルをコピーするように WIX を指定するにはどうすればよいですか?
なんで?
パブリッシュ出力ファイルは異なるマシンで異なるバージョンを持つため、WIX 構成でファイル バージョンをハード コードしたくありません。
発行フォルダーには、発行されたシステムに応じて以下のファイルがあります
Dev machineには、ファイル sos_amd64_amd64_4.6.26725 があります。06
Build machineには、ファイル sos_amd64_amd64_4.6.26725 があります。05
が表示されている場合は、上記のファイルのバージョンが異なります。そのため、*.wxs ファイルのバージョンが一致しないため、Wix ビルドが失敗します。そのため、個々のファイルを指定するのではなく、フォルダーからすべてのファイルを読み取りたいと考えています。
アップデート
コンポーネントファイルを自動生成することで解決された問題
<HeatDirectory OutputFile="ComponentsGenerated.wxs"
DirectoryRefId="INSTALLFOLDER"
Transforms="Filter.xslt"
ComponentGroupName="PublishedComponents"
SuppressCom="true"
Directory="..\..\Service\bin\$(Configuration)\netcoreapp2.1\win-$(Platform)\publish"
SuppressFragments="true" SuppressRegistry="true"
SuppressRootDirectory="true"
AutoGenerateGuids="false"
GenerateGuidsNow="true"
ToolPath="$(WixToolPath)"
PreprocessorVariable="var.BasePath" />
ボーナス
Windows サービスをインストールして実行する必要があったため、Transforms メソッドを使用して、コンポーネント WXS ファイルで生成された EXE を削除しました。
私は今Wixが大好きです!