2010-05-05 151 views
1

问题:WiX主要升级问题!

我需要这些文件,PathwaysMDF和PathwaysLDF来替换(覆盖)主要升级上的旧副本。

好的,这个维克斯令我疯狂。设置文件完美地工作,但数据库文件仍然无法正常工作!我尝试了好几种方法...

这是试图用这个注册表项的代码:有

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

这导致剩余的旧LDF文件,没有 MDF文件在所有的时候完成了,不是旧的,也不是新的。

以下是日志说,关于该尝试: (在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

这里是尝试此使用配套文件中的代码(主可执行程序,其版本) :

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

这样做的结果是LDF文件的行为完美,用新的替换旧的,但MDF文件是GONE。旧的和新的一样,失踪。

以下是日志说,关于该尝试: (在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

我自己也尝试设置只是MDF文件的keyPath =“是”没有CompanionFile标签。这也不起作用。请有什么建议吗? 谢谢!

+0

你可以把原来的问题放回原来的文章,我不记得你在问什么。 – 2010-05-12 18:49:54

+0

我已经这样做了。问题根本在于这两个文件的新版本并没有取代旧版本。谢谢! – Joshua 2010-05-12 20:47:34

回答

0

尝试删除数据库组件中的RemoveFile条目。他们告诉安装程序只能在卸载时删除,升级时,该进程是UPGRADINGPRODUCTCODE而不是安装。除此之外,您还只,如果你想删除wasnt由安装,创建一个文件需要removefile条目(或者,如果你想控制会发生什么样只升级等删除)

反正试试这个

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

编辑1

如果你得到这些问题的看日志,生成日志运行以下命令

MSIEXEC/I “\ PATHTOSETUP \的setup.msi” 总是有用/ L * XV

x是用于额外的调试,可能会产生太多的噪音,所以你可能会排除该开关,但冗长的v通常是非常有用的。

如果上述建议犯规解决它,你可以粘贴你的日志地方,比如http://pastebin.com/

EDIT 2

确定。 pathwaysmdf文件未版本化。说到升级时间,Windows安装程序会比较当前文件和新文件,如果它们都未版本控制并且文件已更改,则假定用户已更改它并因此将其保留。这个比较是在keypath上完成的,在你的情况下是pathwaysmdf文件。要解决此问题,请创建一个虚拟文件或注册表项作为组件的关键路径。我会建议像注册表键

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

仍然无法正常工作。 :( 这里是日志在xv选项... http://pastebin.com/pbFq0F6W – Joshua 2010-05-11 16:00:56

+0

看起来也许这就是相关位!现在,如何解决... 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 2010-05-11 16:25:13

+0

哎呀!我已经尝试将CompanionFile =“pathwaysExe”添加到MDF和LDF文件中...现在,MDF文件在升级过程中消失了! 新日志,详细但没有x。 http://pastebin.com/Gfp4ervK – Joshua 2010-05-11 18:20:41

1

它在我看来,升级设计与WiX有很大的缺陷。应该发生什么,是每个文件应默认“总是替换”任何东西。只有标有适当属性的文件才应用于版本控制和其他考虑因素。

WiX似乎被设计用于只安装.exe和.dll或明确知道有一个版本文件。这是不幸的,因为它可以更有效地阻止如此多的人浪费时间,如果它实际上被设计成一个通用的安装机制。