2012-08-04 5 views
1

Je reçois cette erreur:Wix Erreur de copie de fichier

Unresolved reference to symbol 'Directory:SQLSERVERDATAPATH' in section 'Product:*

<Property Id="SQLSERVERINSTANCENAME" > 
    <RegistrySearch Id="SqlServerInstanceName" Root="HKLM" Key="SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL" Name="MSSQLSERVER" Type="raw"/> 
</Property> 

<Property Id="SQLSERVERDATAPATH" > 
    <RegistrySearch Id="SqlServerDataPath" Root="HKLM" Key="SOFTWARE\Microsoft\Microsoft SQL Server\[SQLSERVERINSTANCENAME]\Setup" Name="SQLDataRoot" Type="raw"/> 
</Property> 

<DirectoryRef Id="SomeFolder"> 
     <Component Id="MDFFileCopyComponent" Guid="4A002555-D939-4DC9-8C23-62747C2BA905"> 
     <!--<RemoveFile Id="DatabaseFileRemove" Name="MyFile" On="install" Directory="MyCopyDir" />--> 
     <CopyFile Id="MDFFileCopy" FileId="MDF" DestinationDirectory="SQLSERVERDATAPATH" /> 
     </Component> 
     <Component Id="LDFFileCopyComponent" Guid="4A002555-D939-4DC9-8C23-62747C2BA905"> 
     <!--<RemoveFile Id="DatabaseFileRemove" Name="MyFile" On="install" Directory="MyCopyDir" />--> 
     <CopyFile Id="LDFFileCopy" FileId="LDF" DestinationDirectory="SQLSERVERDATAPATH" /> 
     </Component> 
</DirectoryRef> 

mise à jour:

<DirectoryRef Id="SomeFolder"> 
    <Component Id="cmpMDF" Guid="066AFD32-D9B4-42A9-AEE1-F1951DAE959F"> 
    <File Id="MDF" Name="Database.MDF" Source="DatabaseScripts/Database/Database.MDF" KeyPath="yes" ReadOnly="no"> 
     <CopyFile Id="MDFFileCopy" DestinationProperty="SQLSERVERDATAPATH" /> 
    </File> 
    </Component> 
    <Component Id="cmpLDF" Guid="311283B0-A6E8-402D-BB33-D1BEB6EA282B"> 
    <File Id="LDF" Name="Database.LDF" Source="DatabaseScripts/Database/Database.LDF" KeyPath="yes" ReadOnly="no"> 
     <CopyFile Id="LDFFileCopy" DestinationProperty="SQLSERVERDATAPATH" /> 
    </File> 
    </Component> 
</DirectoryRef> 

Log:

MSI (s) (18: BC) [13: 42: 32: 002]: Ex ecuting op: FileCopy (SourceName = Base de données.MDF, SourceCabKey = MDF, DestName = Base de données.MDF, Attributs = 512, FileSize = 1178468352, PerTick = 32768,, VerifyMedia = 1 ,,,,, CheckCRC = 0 ,,, InstallMode = 58982400, HashOptions = 0, HashPart1 = -67171634, HashPart2 = 622189464, HashPart3 = -328220288, HashPart4 = -1777642375 ,,)

MSI (s) (18: BC) [13: 42: 32: 006]: Fichier: C: \ Program Files \ MyApp \ Base de données \ Database.MDF; Étre installé; Ne corrige pas; Aucun fichier existant

MSI (s) (18: BC) [13: 42: 32: 009]: la source du fichier MDF est compressée InstallFiles: Fichier: Database.MDF, Répertoire: C: \ Program Files \ MyApp \ Database \, Taille: 1178468352

MSI (s) (18: BC) [13: 42: 32: 015]: Remarque: 1: 2318 2: C: \ Program Files \ MyApp \ Base de données \ Base de données .MDF

MSI (s) (18: BC) [13: 42: 32: 034]: note: 1: 2360

Répondre

1

Dans votre <CopyFile> vous incluez DestinationDirectory="SQLSERVERDATAPATH" Cela signifie que vous devez également avoir un <Directory> avec id="SQLSERVERDATAPATH" quelque part.

Éditer: On dirait que vous voulez utiliser DestinationProperty="SQLSERVERDATAPATH" à la place. Voir http://wix.sourceforge.net/manual-wix2/wix_xsd_copyfile.htm

+0

Je l'ai modifié en DestinationProperty, maintenant il compile mais il ne copie pas le fichier dans le dossier de destination. – gangt

+0

J'ai mis à jour mon message. J'ai déplacé le à l'intérieur de l'élément , toujours le même. – gangt

+0

Créer un fichier journal lors de l'installation; msiexec/i "votre.msi"/l * v "C: \ temp \ install.log" ', et vérifiez que pour les erreurs – wimh