2010-02-03 5 views
1

Je sépare les sections logiques en fichiers fragment * .wxs, mais comment les inclure dans mon Product.wxs principal en utilisant Votive et Visual Studio? Je référence le composant dans le fichier principal de wxs mais recevez et erreur que le composant n'est pas trouvé. Je suppose que je ne les relie pas correctement.Y compris un fragment de fichier WSX

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> 
+0

Il devrait suffire d'inclure simplement tous les fichiers * .wxs pertinents dans le projet. Êtes-vous sûr de référencer le composant avec l'ID correct, et que ce n'est pas, par exemple, un ComponentGroup? –

+0

C'est ce que je supposais. Mes fichiers * .wxs sont tous dans le projet, voir les extraits de fichiers wxs que j'ai publiés. Aucun groupe de composants. –

Répondre

1

Peu importe pour une raison quelconque, je ne suis pas l'enchaînement après avoir créé le nouveau fichier .wxs dans Visual Studio 2008 probablement parce qu'il a été créé à l'origine comme un fichier .wxi.

J'ai exclu et ré-inclus le fichier, a fait un nettoyage et de construire et de travailler maintenant.