2011-10-14 20 views
1

我正在將我的安裝程序從NSIS更改爲MSI(使用Wix),如果升級,我需要將配置文件從舊安裝複製到新安裝。如何從prevoius非msi安裝中複製文件?

在實際安裝新版本之前,我需要通過執行卸載程序來卸載舊版本。

因此,我最終得到了一組自定義操作:首先停止應用程序,如果它正在運行;然後我將配置文件複製到[TempFolder];然後我啓動舊應用程序的卸載程序;之後,我讓MSI完成它的工作,並且作爲最後一步,我已經把一堆<CopyFile>[TempFolder]複製到安裝文件夾。

問題是,微軟安裝程序5(Windows 7和Windows 2008 R2之一)似乎在開始我的自定義操作之前檢查文件存在,然後它不會複製它們。它以前的Windows Installer版本可以正常工作,最高可達4.5。

在我的自定義操作後有沒有強制執行檢查的方法?或者有更好的方法來完成我概述的所有步驟?

回答

1

MoveFiles操作出現在InstallFiles之前。也許文件被正確複製,但MSI會覆蓋它們。請生成日誌文件以獲取更多詳細信息。

+0

不,問題是行爲從不執行:文件不在那裏。讓它工作的唯一方法是在啓動安裝程序之前在臨時文件夾中創建僞文件。我的猜測是InstallValidate操作檢查文件的存在,如果沒有找到,它將跳過該副本。但這隻發生在msi 5上,因爲msi 4.5可以完美運行 – Loghorn

+0

什麼時候將文件複製到臨時預定的自定義操作?任何影響成本計算的自定義操作都應在CostInitialize操作之前進行排序。 – Ciprian

+0

我無法在CostInitialize之前安排它,因爲它是延遲操作(我需要它以提升的權限運行) – Loghorn

相關問題