1

個々のファイルをコピーするための 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が大好きです!

4

1 に答える 1