MSBuild で WIX を使用しています。com ライブラリと .ttf ファイルを 2 つの異なる場所にコピーしようとしていますが、WIX を使用して com ライブラリを登録したいと考えています。Visual Build Pro を使用して実行すると、エラーや警告は表示されず、コピー スクリプトがセットアップ ファイルに追加されていることがわかります。ただし、セットアップをインストールした後、ファイルは指定されたディレクトリにコピーされません。
以下のようにBuild.msbuild <Target>
:
<Target Name="Setup">
<!-- Setup the source directory structure as it should appear on the target machine -->
<ItemGroup>
<DeployFiles Include="$(Includes)" Exclude="$(Excludes)" />
<PostHarvestFiles Include="$(PostHarvestIncludes)" Exclude="$(PostHarvestExcludes)" />
</ItemGroup>
<MakeDir Directories="$(OutputDir)" />
<MakeDir Directories="$(FinalOutputDir)" />
<MakeDir Directories="$(FilesToInstallDir)" />
<!-- Harvest the newly created directory structure for the MSI -->
<Copy SourceFiles="@(DeployFiles)" DestinationFiles="@(DeployFiles->'$(FilesToInstallDir)\%(RecursiveDir)%(Filename)%(Extension)')" />
<Exec Command='$(BuildToolsDir)\Wix\heat.exe dir "$(FilesToInstallDir)" -dr INSTALLDIR -gg -cg FilesToInstall -sfrag -srd -sreg -out "$(MSBuildThisFileDirectory)Files.wxs" -var var.BaseDir' />
<Copy Condition="'%(Extension)' == '.ttf'" SourceFiles="@(PostHarvestFiles)" DestinationFiles="@(PostHarvestFiles->'$(FilesToInstallDir)\%(RecursiveDir)%(Filename)%(Extension)')" />
<!-- Harvest the old renderer DLL. This is a COM object and needs special handling -->
<Copy Condition="'%(Extension)' == '.dll'" SourceFiles="@(PostHarvestFiles)" DestinationFiles="@(PostHarvestFiles->'$(ComFilesToInstallDir)\%(RecursiveDir)%(Filename)%(Extension)')" />
<Exec Command='$(BuildToolsDir)\Wix\heat.exe file "$(ComFilesToInstallDir)\ComSrv.dll" -dr COMINSTALLDIR -ag -cg COMObjectsToInstall -out "$(MSBuildThisFileDirectory)COMDlls.wxs" -var var.ExternalsDir' />
</Target>
<Target Name="CompileWix" DependsOnTargets="Setup">
<!-- Create the Wix object files for linking in the next task -->
<ItemGroup>
<WixFiles Include="$(SourceDir)\Installer-Website\*.wxs" />
</ItemGroup>
<!-- Compile the Wix object files -->
<Exec Command="$(BuildToolsDir)\Wix\candle.exe -dBaseDir="$(FilesToInstallDir)" -dBuildToolsDir="$(BuildToolsDir)" -dExternalsDir="$(SourceDir)\ExternalAssembly" -dFinalVersion=$(FinalVersion) -ext WiXNetFxExtension -ext WixIisExtension -out $(OutputDir)\ @(WixFiles->'%(Filename)% (Extension)',' ')" />
</Target>
<Target Name="BuildMsi" DependsOnTargets="CompileWix">
<!-- Link the Wix object files into the final MSI -->
<ItemGroup>
<WixObjectFiles Include="$(OutputDir)\*.wixobj" />
</ItemGroup>
<!-- Link the Wix object files into the final MSI -->
<Exec Command="$(BuildToolsDir)\Wix\light.exe -cultures:en-us -loc "$(MSBuildThisFileDirectory)WebAppInstallDlg_en-us.wxl" -sice:ICE17 -sice:ICE38 -sice:ICE43 -sice:ICE57 -sice:ICE64 -ext WixUIExtension -ext WiXNetFxExtension -ext WixIisExtension -out $(OutputDir)\$(MsiName) @(WixObjectFiles->'%(FullPath)',' ')" />
<Copy SourceFiles="$(OutputDir)\$(MsiName)" DestinationFolder="$(FinalOutputDir)" />
</Target>
以下のディレクトリを含む Product.wxs ファイル:
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="INSTALLDIR" Name="$(var.BaseProductName)">
<Directory Id="FontsFolder">
<Component Id="cmp_FontsToInstall" Guid="{C286A08B-28CB-4A62-9BF8-833A6B141CB4}">
<File Id="fil82FBA6D3A96B47C48C72FA2F03739758" KeyPath="yes" TrueType="yes" Source="$(var.BaseDir)\OOCA.ttf" />
</Component>
</Directory>
<Directory Id="COMINSTALLDIR" >
<Component Id="COMObjectsToInstall" Guid="{5BAD46DE-D6AB-42D0-A13E-2407F8FBC97B}" >
<File Id="filE617B0B38D366E756290A5B22F2660C4" KeyPath="yes" TrueType="no" Source="$(var.BaseDir)\bin\ComSrv.dll" />
</Component>
</Directory>
.
.
.
.
</Directory>
</Directory>
この MSBuild と Wix は初めてです。私のスクリプトで何が間違っていたのか、誰でも指摘できますか。