2010-05-28 7 views
8

J'utilise Wix version 3.0.5419.0. J'ai deux fichiers .wxs, un qui est un fragment, et un autre qui utilise le fragment pour créer le fichier .msi.Erreur de référence WiX non résolue

Voici le fichier qui utilise le fragment (DaisyFarmer.wxs):

<?xml version='1.0' encoding='windows-1252'?> 
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi' 
    xmlns:iis='http://schemas.microsoft.com/wix/IIsExtension'> 
    <Product Name='Daisy Web Site 1.0' 
      Id='BB7FBBE4-0A25-4cc7-A39C-AC916B665220' 
      UpgradeCode='8A5311DE-A125-418f-B0E1-5A30B9C667BD' 
      Language='1033' Codepage='1252' Version='1.0.0' Manufacturer='the man'> 

    <Package Id='5F341544-4F95-4e01-A2F8-EF74448C0D6D' Keywords='Installer' 
     Description="desc" Manufacturer='the man' InstallerVersion='100' 
     Languages='1033' Compressed='yes' SummaryCodepage='1252' /> 

    <Media Id='1' Cabinet='Sample.cab' EmbedCab='yes' DiskPrompt="CD-ROM #1" /> 
    <Property Id='DiskPrompt' Value="the man" /> 

    <PropertyRef Id="NETFRAMEWORK35"/> 
    <Condition Message='This setup requires the .NET Framework 3.5.'> 
     <![CDATA[Installed OR (NETFRAMEWORK35)]]> 
    </Condition> 

    <Feature Id='DaisyFarmer' Title='DaisyFarmer' Level='1'> 
     <ComponentRef Id='SchedulerComponent' /> 
    </Feature> 

    </Product> 
</Wix> 

Le fragment que je fais référence est (Scheduler.wxs):

<?xml version="1.0" encoding="utf-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
    <Fragment> 
    <DirectoryRef Id="TARGETDIR"> 
     <Directory Id="dir2787390E4B7313EB8005DE08108EFEA4" Name="scheduler"> 
     <Component Id="SchedulerComponent" 
        Guid="{9254F7E1-DE41-4EE5-BC0F-BA668AF051CB}"> 
      <File Id="fil9A013D0BFB837BAC71FED09C59C5501B" 
       KeyPath="yes" 
       Source="SourceDir\DTBookMonitor.exe" /> 
      <File Id="fil4F0D8D05F53E6AFBDB498E7C75C2D98F" 
       KeyPath="no" 
       Source="SourceDir\DTBookMonitor.exe.config" /> 
      <File Id="filF02F4686267D027CB416E044E8C8C2FA" 
       KeyPath="no" 
       Source="SourceDir\monitor.bat" /> 
      <File Id="fil05B8FF38A3C85FE6C4A58CD6FDFCD2FB" 
       KeyPath="no" 
       Source="SourceDir\output.txt" /> 
      <File Id="fil397F04E2527DCFDF7E8AC1DD92E48264" 
       KeyPath="no" 
       Source="SourceDir\pipelineOutput.txt" /> 
      <File Id="fil83DFACFE7F661A9FF89AA17428474929" 
       KeyPath="no" 
       Source="SourceDir\process.bat" /> 
      <File Id="fil2809039236E0072642C52C6A52AD6F2F" 
       KeyPath="no" 
       Source="SourceDir\README.txt" /> 
     </Component> 
     </Directory> 
    </DirectoryRef> 
    </Fragment> 
</Wix> 

Je cours alors le suivant commandes:

candle -ext WixUtilExtension -ext WiXNetFxExtension DaisyFarmer.wxs Scheduler.wxs 
light -sice:ICE20 -ext WixUtilExtension -ext WiXNetFxExtension Scheduler.wixobj DaisyFarmer.wixobj -out DaisyFarmer.msi 

Je reçois une erreur quand je lance light.exe qui dit

"DaisyFarmer.wxs (20): erreur LGHT0094: référence au symbole Unresolved 'composant: SchedulerComponent' dans la section 'Produit: {BB7FBBE4-0A25-4CC7-A39C-AC916B665220}'."

Qu'est-ce qui me manque?

Répondre

7

La raison pour laquelle j'ai ce problème est que je ne spécifie pas le TARGETDIR dans DaisyFarmer.wxs. Si je modifie DaisyFarmer.wxs afin que le TARGETDIR est spécifié, comme:

<?xml version='1.0' encoding='windows-1252'?> 
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi' 
    xmlns:iis='http://schemas.microsoft.com/wix/IIsExtension'> 
<Product Name='Daisy Web Site 1.0' 
    Id='BB7FBBE4-0A25-4cc7-A39C-AC916B665220' 
    UpgradeCode='8A5311DE-A125-418f-B0E1-5A30B9C667BD' 
    Language='1033' Codepage='1252' Version='1.0.0' Manufacturer='the man'> 

<Package Id='5F341544-4F95-4e01-A2F8-EF74448C0D6D' Keywords='Installer' 
    Description="desc" Manufacturer='the man' InstallerVersion='100' 
    Languages='1033' Compressed='yes' SummaryCodepage='1252' /> 

<Media Id='1' Cabinet='Sample.cab' EmbedCab='yes' DiskPrompt="CD-ROM #1" /> 
<Property Id='DiskPrompt' Value="the man" /> 

<PropertyRef Id="NETFRAMEWORK35"/> 
<Condition Message='This setup requires the .NET Framework 3.5.'> 
    <![CDATA[Installed OR (NETFRAMEWORK35)]]> 
</Condition> 

<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="INSTALLDIR" Name="scheduler"> 
    </Directory> 
</Directory> 

<Feature Id='DaisyFarmer' Title='DaisyFarmer' Level='1'> 
    <ComponentRef Id='SchedulerComponent' /> 
</Feature> 

Ensuite, tout fonctionne.

Questions connexes