最近,我們向我們的安裝程序添加了一項功能,要求稍稍重命名幾個桌面快捷方式(將版本號添加到名稱中)。我在安裝程序將舊快捷方式替換爲新快捷方式時遇到問題。最初報告問題時,正在安裝新的快捷方式,但舊的快捷方式未被刪除。在處理完這個問題之後,我遇到了一個混合問題:其中一箇舊的捷徑正在被刪除(迄今爲止,這麼好),但另一個不是(不太好),並且在這兩種情況下,新的捷徑沒有被安裝(甚至更糟糕)。我試着改變安裝這些快捷方式的每個組件的GUID,我甚至曾嘗試在每個負責快捷方式的合併模塊中更改ProductCode屬性,但似乎沒有得到所需的結果行爲(在升級時與舊的和新的一起)。如何強制Windows Installer替換重命名的快捷方式?
只需重新引導相關組件,以下是日誌文件爲安裝狀態顯示的內容(爲了幫助進行調試,我稍微重命名了這些組件,以便我可以分辨哪些是來自舊版本和來自新):
...
MSI (s) (E0:70) [16:49:21:921]: Component: DesktopFolderX.04E48C43_FFCB_42AC_AC59_1D96BEC85C17; Installed: Absent; Request: Local; Action: Local
...
MSI (s) (E0:70) [16:49:21:921]: Component: DesktopFolderX.25696C3E_819B_4675_BEE2_C36D2B5CB521; Installed: Absent; Request: Local; Action: Local
...
MSI (s) (E0:C0) [17:02:18:390]: Component: DesktopFolder.25696C3E_819B_4675_BEE2_C36D2B5CB521; Installed: Local; Request: Absent; Action: Absent
...
MSI (s) (E0:C0) [17:02:18:390]: Component: DesktopFolder.04E48C43_FFCB_42AC_AC59_1D96BEC85C17; Installed: Local; Request: Absent; Action: Null
...
正如你可以在日誌中看到,新的快捷方式,應在兩種情況下會在,但他們沒有。我無法解釋爲什麼安裝程序使用兩個舊快捷方式做了不同的事情。
僅供參考:我的開發環境是Wise Installation Studio 7.0。
編輯:我已將所有內容重置爲之前的內容,但當前ProductVersion和ProductCode除外。完成之後,安裝程序會保留舊的快捷方式,但不會安裝新的快捷方式。 (這是與最初報告和我能夠複製的行爲不同的,即舊的快捷方式已安裝,並且新的(已重命名的)快捷方式也已安裝。)在重新引導兩個相關組件後,安裝程序刪除舊的快捷方式,但仍不會安裝新的快捷方式。 (這就是在XP上發生的事情。)
相關線在日誌中後,重新引導組件如下:
...
MSI (s) (80:EC) [10:48:31:091]: Component: DesktopFolder.25696C3E_819B_4675_BEE2_C36D2B5CB521; Installed: Absent; Request: Local; Action: Local
...
MSI (s) (80:EC) [10:48:31:091]: Component: DesktopFolder.04E48C43_FFCB_42AC_AC59_1D96BEC85C17; Installed: Absent; Request: Local; Action: Local
...
MSI (s) (80:0C) [11:04:22:882]: Component: DesktopFolder.25696C3E_819B_4675_BEE2_C36D2B5CB521; Installed: Local; Request: Absent; Action: Absent
...
MSI (s) (80:0C) [11:04:22:882]: Component: DesktopFolder.04E48C43_FFCB_42AC_AC59_1D96BEC85C17; Installed: Local; Request: Absent; Action: Absent
...
前兩行似乎表明,新的快捷方式正在安裝,但他們不是。之後的修復將安裝新的快捷方式。
當運行原始問題(升級後存在舊快捷方式和新快捷方式)的安裝程序的副本時,上面最後兩行報告的操作爲空而不是缺席。
編輯2:當前的行爲是舊的快捷方式保持安裝,並且沒有安裝新的快捷方式。當我重新GUID他們的組件時,舊的快捷方式被刪除,並且新的仍未被安裝。我嘗試了克里斯托弗Painter的解決方案,但都沒有去任何地方。 (請參閱我對該答案的評論。)必須有一種方法可以安裝新的版本快捷方式,以替代舊的未版本化快捷方式。有沒有人可以提供可行的解決方案?
編輯3:事實證明,沒有安裝新快捷方式的新行爲是由於我在獲取源文件時犯的一個錯誤,並且進入安裝程序的錯誤沒有並不像那些被替換的那樣最新。一旦最新的文件被編譯到安裝程序中,我就可以得到所需的結果(舊的快捷方式出來,新的快捷方式)。 (有關更多信息,請參閱我的答案。)
較新的Windows版本(Vista和更高版本)使用快捷方式緩存。因此,如果您嘗試更改快捷方式屬性(名稱,圖標等),Windows仍將使用緩存中的一個。我不確定這是否適合您,但您可以在刪除原始版本後嘗試重新啓動機器。 – 2011-01-07 08:11:48