首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未解决的“片段”一节中对符号“Directory:Component_A.Binaries”的引用:

未解决的“片段”一节中对符号“Directory:Component_A.Binaries”的引用:
EN

Stack Overflow用户
提问于 2019-08-09 19:25:13
回答 1查看 945关注 0票数 0

我有两个简单的控制台应用程序项目"Component-A“和"Component-B”,我想在我的解决方案中的SetupWixDemo项目中包括它们。

在用于安装的Wix项目文件中,我启用了获取项目。

代码语言:javascript
复制
  <PropertyGroup>
    <EnableProjectHarvesting>True</EnableProjectHarvesting>
  </PropertyGroup>

并使用HeatProject包括了这两个项目。

代码语言:javascript
复制
<ItemGroup>
    <HeatProject Include="..\Component-A\Component-A.csproj">
      <ProjectOutputGroups>Binaries</ProjectOutputGroups>
      <Link>Component-A.csproj</Link>
    </HeatProject>
    <HeatProject Include="..\Component-B\Component-B.csproj">
      <ProjectOutputGroups>Binaries</ProjectOutputGroups>
      <Link>Component-B.csproj</Link>
    </HeatProject>
  </ItemGroup>

它已正确生成组件wix文件,生成了_Component_A.wxs

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Fragment>
        <DirectoryRef Id="Component_A.Binaries">
            <Component Id="cmpC008F1473856A259012D9243F2FAA367" Guid="*">
                <File Id="fil76224611BE6FE33E8C4C1CB922BE4507" Source="$(var.Component-A.TargetDir)\Component-A.exe" />
            </Component>
            <Component Id="cmp8F2527F5846E0A97DD990421A1BFE039" Guid="*">
                <File Id="fil2887E426D398DC77AF53475EC6CC8E82" Source="$(var.Component-A.TargetDir)\Component-A.exe.config" />
            </Component>
        </DirectoryRef>
    </Fragment>
    <Fragment>
        <ComponentGroup Id="Component_A.Binaries">
            <ComponentRef Id="cmpC008F1473856A259012D9243F2FAA367" />
            <ComponentRef Id="cmp8F2527F5846E0A97DD990421A1BFE039" />
        </ComponentGroup>
    </Fragment>
</Wix>

生成的_Component_B.wxs

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Fragment>
        <DirectoryRef Id="Component_B.Binaries">
            <Component Id="cmpC4EEFA1957E631623A020D230FE7FE27" Guid="*">
                <File Id="fil027682CC235FE3E8DB7E93B17A690B4E" Source="$(var.Component-B.TargetDir)\Component-B.exe" />
            </Component>
            <Component Id="cmp5DCF4C7D83433EA092BBF18737C93FB1" Guid="*">
                <File Id="filA4BD1B738072866436267073D1E70237" Source="$(var.Component-B.TargetDir)\Component-B.exe.config" />
            </Component>
        </DirectoryRef>
    </Fragment>
    <Fragment>
        <ComponentGroup Id="Component_B.Binaries">
            <ComponentRef Id="cmpC4EEFA1957E631623A020D230FE7FE27" />
            <ComponentRef Id="cmp5DCF4C7D83433EA092BBF18737C93FB1" />
        </ComponentGroup>
    </Fragment>
</Wix>

Product.wxs

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">

    <Product Id="*" Name="SetupWixDemo" Language="1033" Version="1.0.0.0" Manufacturer="WK" UpgradeCode="60e5ca62-51b5-47d3-81b5-a36b078c88c5">

    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine"  Platform="x64"/>

        <MajorUpgrade DowngradeErrorMessage="A newer version of SetupWixDemo is already installed." />
        <MediaTemplate />

        <Feature Id="ProductFeature" Title="SetupWixDemo" Level="1">
      <ComponentGroupRef Id="Component_A.Binaries"  />
      <ComponentGroupRef Id="Component_B.Binaries" />
        </Feature>

    <Property Id="WIXUI_INSTALLDIR" Value="INSTALLFOLDER" />
    <UIRef Id="WixUI_InstallDir" />

    </Product>

    <Fragment>
    <SetDirectory Id="INSTALLFOLDER" Value="[WindowsVolume]Apps\WixDemo" />
    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFiles64Folder">
        <Directory Id="INSTALLFOLDER" Name="SetupWixDemo" />
      </Directory>
    </Directory>
    </Fragment>
</Wix>

我一直得到以下信息。

未解决的对片段中符号'Directory:Component_A.Binaries‘的引用:’未解决的对'Directory:Component_B.Binaries‘节中符号’Directory:Component_B.Binaries‘的引用:

我做错什么了?

更新:

找到了解决此错误的方法。意识到我需要同时包含两个组件的目录条目

代码语言:javascript
复制
    <Fragment>
    <SetDirectory Id="INSTALLFOLDER" Value="[WindowsVolume]Apps\WixDemo" />
    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFiles64Folder">
        <Directory Id="INSTALLFOLDER" Name="WixDemo" />
        <Directory Id="Component_A.Binaries" Name="WixDemo" />
        <Directory Id="Component_B.Binaries" Name="WixDemo" />
      </Directory>
    </Directory>
    </Fragment>

虽然现在它没有安装任何东西,也没有错误。

EN

回答 1

Stack Overflow用户

发布于 2019-08-09 20:04:40

找到了剩下的问题。它安装在程序文件下。因此,必须为每个组件包括SetDirectory标记,并将其修复。

代码语言:javascript
复制
<Fragment>
    <SetDirectory Id="INSTALLFOLDER" Value="[WindowsVolume]Apps\WixDemo" />
    <SetDirectory Id="Component_A.Binaries" Value="[WindowsVolume]Apps\WixDemo" />
    <SetDirectory Id="Component_B.Binaries" Value="[WindowsVolume]Apps\WixDemo" />
    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFiles64Folder">
        <Directory Id="INSTALLFOLDER" Name="WixDemo" />
        <Directory Id="Component_A.Binaries" Name="WixDemo" />
        <Directory Id="Component_B.Binaries" Name="WixDemo" />
      </Directory>
    </Directory>
    </Fragment>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57436031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档