2012-02-20 66 views
1

當使用WIX進行msi設置時,我遇到了與更改/修復時執行CopyFile有關的問題。如何使用WIX CopyFile元素將更改/修復中的文件複製到系統文件夾,而無需將其安裝到目標上?

我有一個功能,它具有將文件從源文件夾複製/移動到用戶系統內已存在的文件夾的組件。這不是我的應用程序的文件夾。我只是移動這個文件,而不是將其安裝到目標。如果我使用完整的安裝程序進行安裝,此功能正常工作。但是在初始安裝時,我選擇不安裝此功能,然後在「更改」期間嘗試安裝它,除了CopyFile組件外,功能內的所有其他自定義操作/組件都將執行/安裝。這對我的設置很重要,如果它沒有被複制,我的設置將失敗。

想知道是否有人找到類似問題的解決方案或曾遇到過類似的問題?

+1

您可以將文件安裝到該位置而不是從其他位置複製文件嗎? – 2012-02-21 06:32:30

+0

是的,我已經給它一個嘗試,這是工作。在我或其他人找到解決方案之前,我會使用這種方法,但理想情況下我希望防止重複以減少安裝的大小。 – sttaq 2012-02-21 10:02:48

+0

所以你需要這兩個地方的文件,是嗎? WiX應該處理這種情況並且只保留CAB中的一個版本的文件。 – 2012-02-21 12:57:48

回答

0

包含CopyFile操作的組件配置不正確。它應該有一個實際的文件或註冊表項作爲關鍵路徑。

雖然Windows Installer使用組件來管理資源,但組件的關鍵路徑是決定組件是否安裝的主要因素。

因此,一個沒有資源作爲關鍵路徑的組件永遠不會被安裝,它所包含的CopyFile操作將永遠不會被執行。

+0

我已將該文件放置在此組件中,並以此方式工作。但問題是它複製了這個我最初想避免的文件。我也將KeyPath屬性設置爲true。我將嘗試使用CopyFile放置註冊表項並查看是否有效。將盡快報告。 – sttaq 2012-04-02 13:59:27

+0

我試過下面沒有運氣 \t \t \t <的RegistryKey根= 「HKLM」 密鑰= 「軟件」 ACTION = 「創建」> <的RegistryKey密鑰= 「的ProductKey」 ACTION = 「createAndRemoveOnUninstall」> sttaq 2012-04-03 08:59:20

相關問題