#wix #windows-installer #msbuild-task #wix3.7
#wix #windows-установщик #msbuild-задача #wix3.7
Вопрос:
У меня есть эта разметка. Каким должно быть значение атрибута Project=»@(_Project)» Задачи HeatProject? В документе Wix указан требуемый параметр группы элементов, но как мне связать нижеприведенную группу элементов??
<ItemGroup>
<ProjectReference Include="..MyProjectAPresentsoft.MyProjectA.csproj">
<Name>MyProjectA</Name>
<Project>{59FB083D-C11C-4690-A128-28F5269125D4}</Project>
<Private>True</Private>
</ProjectReference>
</ItemGroup>
<Target Name="BeforeBuild">
<HeatProject
NoLogo="$(HarvestProjectsNoLogo)"
SuppressAllWarnings="$(HarvestProjectsSuppressAllWarnings)"
SuppressSpecificWarnings="$(HarvestProjectsSuppressSpecificWarnings)"
ToolPath="$(WixToolPath)"
TreatWarningsAsErrors="$(HarvestProjectsTreatWarningsAsErrors)"
TreatSpecificWarningsAsErrors="$(HarvestProjectsTreatSpecificWarningsAsErrors)"
VerboseOutput="$(HarvestProjectsVerboseOutput)"
AutogenerateGuids="$(HarvestProjectsAutogenerateGuids)"
GenerateGuidsNow="$(HarvestProjectsGenerateGuidsNow)"
OutputFile="$(IntermediateOutputPath)_%(_Project.Filename).wxs"
SuppressFragments="$(HarvestProjectsSuppressFragments)"
SuppressUniqueIds="$(HarvestProjectsSuppressUniqueIds)"
Transforms="%(_Project.Transforms)"
Project="@(_Project)"
ProjectOutputGroups="Content;Binaries;Satellites" />
</Target>
Я очень новичок в установщике и wix.
Ответ №1:
Ваш вопрос касается MSBuild. Задача ссылается на группу элементов _Project, но у вас есть группа элементов ProjectReference. Чтобы исправить это, просто замените _Project на ProjectReference везде.
Однако из-за конструкции целей WiX вам не нужно напрямую вызывать задачу HeatProject. Они делают это как часть основной сборки, если вы включаете ее как в целом, так и для каждой конкретной ссылки на проект.
<PropertyGroup>
<EnableProjectHarvesting>True</EnableProjectHarvesting>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..MyProjectAPresentsoft.MyProjectA.csproj">
<Name>MyProjectA</Name>
<Project>{59FB083D-C11C-4690-A128-28F5269125D4}</Project>
<Private>True</Private>
<DoNotHarvest>
</DoNotHarvest>
<RefProjectOutputGroups>Binaries;Content;Satellites</RefProjectOutputGroups>
<RefTargetDir>INSTALLFOLDER</RefTargetDir>
</ProjectReference>
</ItemGroup>
Выходные данные генерируются в папке «obj», если вы действительно хотите это увидеть. Но все, что вам нужно сделать, это добавить что-то вроде следующего, где это необходимо (например, внутри функции).
<ComponentGroupRef Id="MyProjectA.Binaries" />