2010-05-05 154 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或明確知道有一個版本文件。這是不幸的,因爲它可以更有效地阻止如此多的人浪費時間,如果它實際上被設計成一個通用的安裝機制。