2010-05-05 2 views
1

Le problème:Problème avec la mise à jour majeure de WiX!

J'ai besoin de ces deux fichiers, PathwaysMDF et PathwaysLDF pour remplacer (remplacer) les anciennes copies lors d'une mise à niveau majeure.

D'accord, ce WiX me rend fou. Le fichier de paramètres fonctionne parfaitement, mais les fichiers de base de données ne fonctionnent toujours pas! J'ai essayé plusieurs approches ...

Voici le code d'essayer cela avec la clé de Registre:

<Component Id="Database" Guid="1D8756EF-FD6C-49BC-8400-299492E8C65D" > 
<RegistryValue Root="HKLM" Key="Software\TDR\Pathways\Database" Name="installed" Type="integer" Value="1" KeyPath="yes" /> 
<File Id="pathwaysMdf" Name="Pathways.mdf" DiskId="1" Source="\\fileserver\Shared\Databases\Pathways\SystemDBs\Pathways.mdf" /> 
<File Id="pathwaysLdf" Name="Pathways_log.ldf" DiskId="1" Source="\\fileserver\Shared\Databases\Pathways\SystemDBs\Pathways.ldf"/> 
</Component> 

Il en résulte l'ancien fichier LDF restant et aucun fichier MDF il du tout, lorsque terminé, pas l'ancien, ni le nouveau.

Voici ce que le journal dit à propos de cette tentative: (journal complet à http://pastebin.com/a8a7uKfL)

MSI (s) (C8:80) [09:01:51:845]: Executing op: SetTargetFolder(Folder=C:\Documents and Settings\All Users\Application Data\Pathways) MSI (s) (C8:80) [09:01:51:845]: Executing op: SetSourceFolder(Folder=1\ykpqggg9\Pathways\|CommonAppData\Pathways) MSI (s) (C8:80) [09:01:51:845]: Executing op: FileCopy(SourceName=x_gekdq7.ldf|Pathways_log.ldf,SourceCabKey=pathwaysLdf,DestName=Pathways_log.ldf,Attributes=512,FileSize=40239104,PerTick=32768,,VerifyMedia=1,,,,,CheckCRC=0,,,InstallMode=58982400,HashOptions=0,HashPart1=-403787921,HashPart2=771061375,HashPart3=-1732951415,HashPart4=-1390528611,,) MSI (s) (C8:80) [09:01:51:845]: File: C:\Documents and Settings\All Users\Application Data\Pathways\Pathways_log.ldf; Won't Overwrite; Won't patch; Existing file is unversioned but modified MSI (s) (C8:80) [09:01:51:845]: Executing op: FileCopy(SourceName=Pathways.mdf,SourceCabKey=pathwaysMdf,DestName=Pathways.mdf,Attributes=512,FileSize=156368896,PerTick=32768,,VerifyMedia=1,,,,,CheckCRC=0,,,InstallMode=58982400,HashOptions=0,HashPart1=570808063,HashPart2=-1571218748,HashPart3=-867678845,HashPart4=601212343,,) MSI (s) (C8:80) [09:01:51:845]: File: C:\Documents and Settings\All Users\Application Data\Pathways\Pathways.mdf; Won't Overwrite; Won't patch; Existing file is unversioned but modified

Voici le code à tenter cette aide d'un fichier d'accompagnement (l'exécutable principal du programme, qui est versionné) :

<Component Id="Database" Guid="1D8756EF-FD6C-49BC-8400-299492E8C65D" > 
<File Id="pathwaysMdf" Name="Pathways.mdf" DiskId="1" Source="\\fileserver\Shared\Databases\Pathways\SystemDBs\Pathways.mdf" CompanionFile="pathwaysExe" /> 
<File Id="pathwaysLdf" Name="Pathways_log.ldf" DiskId="1" Source="\\fileserver\Shared\Databases\Pathways\SystemDBs\Pathways.ldf" CompanionFile="pathwaysExe" /> 
</Component> 

le résultat de ceci est que le fichier LDF se comporte parfaitement, en remplacement de l'ancien et le nouveau, cependant, le fichier MDF est GONE. Ancien et nouveau, manquant.

Voici ce que le journal dit à propos de cette tentative: (journal complet à http://pastebin.com/gijLN5QY):

MSI (s) (C8:F8) [09:21:55:206]: Executing op: SetCompanionParent(ParentPath=C:\Program Files\Pathways\,ParentName=Pathways.exe,ParentVersion=1.1.5.0,ParentLanguage=0) MSI (s) (C8:F8) [09:21:55:206]: Executing op: FileCopy(SourceName=Pathways.mdf,SourceCabKey=pathwaysMdf,DestName=Pathways.mdf,Attributes=512,FileSize=156368896,PerTick=32768,,VerifyMedia=1,,,,,CheckCRC=0,Version=pathwaysExe,,InstallMode=58982400,,,,,,,) MSI (s) (C8:F8) [09:21:55:236]: File: C:\Documents and Settings\All Users\Application Data\Pathways\Pathways.mdf; Overwrite; Won't patch; Existing file is of an equal version (Checked using version of companion: C:\Program Files\Pathways\Pathways.exe) MSI (s) (C8:F8) [09:21:55:236]: Source for file 'pathwaysMdf' is compressed InstallFiles: File: Pathways.mdf, Directory: C:\Documents and Settings\All Users\Application Data\Pathways\, Size: 156368896 MSI (s) (C8:F8) [09:21:55:246]: Re-applying security from existing file. MSI (s) (C8:F8) [09:21:55:246]: Verifying accessibility of file: Pathways.mdf MSI (s) (C8:F8) [09:21:55:266]: Note: 1: 2318 2: C:\Documents and Settings\All Users\Application Data\Pathways\Pathways.mdf MSI (s) (C8:F8) [09:21:55:266]: Note: 1: 2360 MSI (s) (C8:F8) [09:21:55:266]: Note: 1: 2360

J'ai aussi essayé de placer simplement le fichier MDF à KeyPath = « yes » sans l'étiquette CompanionFile . Cela ne fonctionne pas non plus. S'il vous plaît, des suggestions? MERCI!

+0

Pouvez-vous remettre la question originale dans le message original, je ne me souviens pas de ce que vous demandez. –

+0

Je l'ai fait. Le problème est simplement que les nouvelles versions de ces deux fichiers ne remplacent pas les anciennes. JE VOUS REMERCIE! – Joshua

Répondre

0

Essayez de supprimer les entrées RemoveFile dans le composant Base de données. Ils disent au programme d'installation de ne supprimer que lors de la désinstallation, lors de la mise à niveau, le processus UPGRADINGPRODUCTCODE n'est pas désinstallé. En outre, vous avez seulement besoin de l'entrée de RemoveFile si vous souhaitez supprimer un fichier wasnt créé par votre installateur, (ou si vous voulez contrôler ce qui se passe comme ne supprime sur la mise à niveau, etc.)

essayer de toute façon ce

<Component Id="Database" Guid="1D8756EF-FD6C-49BC-8400-299492E8C65D"> 
     <File KeyPath="yes" Id="pathwaysMdf" Name="Pathways.mdf" DiskId="1" Source="\\fileserver\Shared\Databases\Pathways\SystemDBs\Pathways.mdf" /> 
     <File Id="pathwaysLdf" Name="Pathways_log.ldf" DiskId="1" Source="\\fileserver\Shared\Databases\Pathways\SystemDBs\Pathways.ldf" /> 
    </Component> 

EDIT 1

Si vous obtenez ces problèmes est toujours utile de regarder le journal, pour générer un journal exécutez la commande suivante

msiexec/i "\ PATHTOSETUP \ setup.msi"/l * xv 0 X est pour un débogage supplémentaire qui peut produire trop de bruit, donc vous pouvez exclure ce commutateur mais le v pour verbose est normalement très utile.

Si la proposition ci-dessus ne marche pas fixer pouvez-vous coller votre journal quelque part comme http://pastebin.com/

EDIT 2

Ok. Le fichier pathwaysmdf n'est pas versionné. En ce qui concerne la mise à niveau, Windows Installer compare le fichier actuel et le nouveau fichier s'ils ne sont pas versionnés et si le fichier a été modifié, il suppose que l'utilisateur l'a modifié et qu'il le quitte. Cette comparaison est faite sur le keypath, qui dans votre cas est le fichier pathwaysmdf. Pour résoudre ce problème, créez un fichier fictif ou une clé de registre en tant que keypath des composants. Je suggère quelque chose comme une clé de registre

HKLM\Software\YOURCOMPANY\YOURPRODUCT\Database\Isinstalled = 1 
+0

Ne fonctionne toujours pas. :( Voici le journal avec les options xv ... http://pastebin.com/pbFq0F6W – Joshua

+0

Il semble que peut-être cela est le bit correspondant! Maintenant, comment résoudre ... Executing op: FileCopy(SourceName=Pathways.mdf,SourceCabKey=pathwaysMdf,DestName=Pathways.mdf,Attributes=512,FileSize=156368896,PerTick=32768,,VerifyMedia=1,,,,,CheckCRC=0,,,InstallMode=58982400,HashOptions=0,HashPart1=-988646793,HashPart2=1303343803,HashPart3=1319815885,HashPart4=-1582270230,,) MSI (s) (E8:20) [09:10:38:782]: File: C:\Documents and Settings\All Users\Application Data\Pathways\Pathways.mdf; \t Won't Overwrite; \t Won't patch; \t Existing file is unversioned but modified Joshua

+0

ARGH! J'ai essayé d'ajouter CompanionFile = "pathwaysExe" à la fois les fichiers MDF et LDF ... maintenant, le fichier MDF disparaît lors de la mise à niveau! nouveau journal, verbeux, mais sans x http://pastebin.com/Gfp4ervK – Joshua

1

Il me semble que la conception de la mise à niveau est très imparfaite avec WiX. Ce qui devrait se passer, c'est que chaque fichier devrait, par défaut, remplacer "toujours" n'importe quoi. Seuls les fichiers marqués avec un attribut approprié doivent être pris en compte pour la gestion des versions et d'autres considérations. WiX semble être conçu pour installer uniquement .exe et .dll ou autre explicitement connu pour avoir une version des fichiers. C'est malheureux, car cela pourrait être beaucoup plus efficace et empêcher tant de gens de perdre leur temps, si c'était en fait un mécanisme d'installation à usage général.

Questions connexes