문제

I am separating out logical sections into fragment *.wxs files, but how do I include them in my main Product.wxs using Votive and Visual Studio? I am referencing the component in the main wxs file but receive and error that the component is not found. I'm assuming I'm not linking these correctly.

Error 13 Unresolved reference to symbol 'Component:RegistryEntries' in section 'Product:{A5CA93A2-91B2-46CA-B681-07451DCCCDCB}'.

<ComponentRef Id="RegistryEntries"/>

RegistrySettings.wxs

<?xml version="1.0" encoding="UTF-8" ?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<?include $(sys.CURRENTDIR)\Config.wxi?>

<!-- Registry entries -->
<Fragment Id="RegistrySettings">
<DirectoryRef Id="TARGETDIR">
  <Component Id="RegistryEntries" Guid="{MY-GUID}">

    <!-- Create registry keys and grant user rights -->
    <!-- Add Registry Keys and default values as necessary -->
    <RegistryKey Root="HKLM" Key="$(var.RegKey)" Action="create">
      <Permission User="$(var.DefaultUser)" GenericAll="yes" ChangePermission="yes"/>
    </RegistryKey>

    <!-- Connection Info registry keys and values -->
    <RegistryKey Root="HKLM" Key="$(var.ConnectionRegKey)" Action="create">
      <Permission User="$(var.DefaultUser)" GenericAll="yes" ChangePermission="yes" />

      <!-- Main Connection settings -->
      <RegistryValue Name="SoapURL" Value="$(var.DefaultSoapUrl)" Type="string"/>
    </RegistryKey>
    ...

  </Component>
</DirectoryRef>
</Fragment>
</Wix>

Product.wxs

<?xml version="1.0" encoding="UTF-8" ?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
 xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension">

<!-- Use pre-processor variable to include other wix variable definitions / components -->
<?include $(sys.CURRENTDIR)\Config.wxi?>

<Product Id="a5ca93a2-91b2-46ca-b681-07451dcccdcb" 
       Name="$(var.ProductName)" 
       Language="1033"
       Version="$(var.ProductVersion)" 
       Manufacturer="$(var.ProductManufacturer)" 
       UpgradeCode="$(var.UpgradeCode)">

<Package InstallerVersion="200" Compressed="yes" Keywords='Installer' Description="App Installer"
  Languages='1033' SummaryCodepage='1252' />

<!-- Define custom variables for icons and license files -->
<WixVariable Id="WixUILicenseRtf" Value="docs\liscensing.rtf" />
<WixVariable Id="WixUIBannerBmp" Value="images\fplogo1.bmp" />
<WixVariable Id="WixUIDialogBmp" Value="images\fp-setup.bmp" />

<!-- Add Install conditions such as .Net version required and privileges -->
<PropertyRef Id="NETFRAMEWORK35_SP_LEVEL"/>
<Condition Message="This application requires .NET Framework 3.5 SP1. Please install the .NET Framework then run this installer again.">
  <![CDATA[Installed OR (NETFRAMEWORK35_SP_LEVEL and NOT NETFRAMEWORK35_SP_LEVEL = "#0")]]>
</Condition>

<Condition Message="You need to be an administrator to install this product.">
  Privileged
</Condition>

<Media Id="1" Cabinet="My.cab" EmbedCab="yes" />

<!-- Default to installing for all users / everyone -->
<Property Id="ALLUSERS">1</Property>


<!-- Win64="$(var.Win64)" -->
<Property Id="INSTALLDIR">
  <RegistrySearch Id="RegistrySearch" Type="raw" Root="HKLM" 
            Key="Software\[Manufacturer]\[ProductName]" Name="InstallLocation" />
</Property>

<!-- Add Remove Programs properties -->
<Property Id="ARPPRODUCTICON" Value="MyIcon.exe" />
<Property Id="ARPHELPLINK" Value="$(var.ArpHelpUrl)" />

<!-- Base Install Directory  - Define Directory Structures -->
<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="ProgramFilesFolder">
    <Directory Id="APPLICATIONFOLDER" Name="MyWix">
      <Directory Id="ArchDir" Name="$(var.ArchDir)" />
      <Directory Id="LogDir" Name="$(var.LogDir)" />
      <Directory Id="TempDir" Name="$(var.TempDir)" />
    </Directory>
  </Directory>

  <Directory Id="ProgramMenuFolder" Name="Programs">
    <Directory Id="ApplicationProgramsDir" Name="MyWix" />
  </Directory>

  <Directory Id="DesktopFolder" Name="Desktop" />
</Directory>

<!-- Application Directory and Structure-->
<DirectoryRef Id="APPLICATIONFOLDER">
  <Component Id="My.exe" Guid="MYGUID">
    <File Id="My.exe.file" Name="$(var.Project.TargetFileName)"
          Source="$(var.Project.TargetPath)" DiskId="1" KeyPath="yes" Vital="yes">
    </File>
  </Component>
</DirectoryRef >



<!-- Features to install, these could include the main exe, help docs, and scanner components -->
<Feature Id="Complete" Title="Product" Description="The complete package"
         Display="expand" Level="1" ConfigurableDirectory="APPLICATIONFOLDER">
  <Feature Id="MainApplication" Title="Installer Wix" Level="1">
    <ComponentRef Id="My.exe"/>
    <ComponentRef Id="RegistryEntries"/>
    <ComponentRef Id="ApplicationStartMenuShortCut" />
  </Feature>
</Feature>
</Product> 
</Wix>
도움이 되었습니까?

해결책

Never mind for some reason I it wasn't linking after I created the new .wxs file in Visual Studio 2008 possibly because it was originally created as a .wxi file.

I excluded and re-included the file, did a clean and build and its working now.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top