我已將基於WiX的安裝程序混淆在多臺服務器上,以便在卸載過程中不再刪除文件或組件(或甚至其他功能)。 MSI日誌顯示所有不會卸載的組件上的PreviouslyPinned = 1。刪除與WiX一起安裝的GUID =「」組件
我不喜歡使用SharedDll計數甚至不同安裝程序之間的共享組件。
我想我已經追蹤到我的WiX代碼的特定版本。我做了幾件愚蠢的事情。我(無意)創建的非託管組件用空的Guid
<Component Id="file.ext" Guid="">
<File .../>
<Component>
,我也改變了其他組件的文件位置和Id(但不包括它的GUID)。先前版本中的所有組件顯示BeforelyPinned = 1,並且不會卸載,並且在此版本之後添加的新組件正確安裝/卸載。
如何讓我的安裝程序恢復正常並刪除以前固定的組件?
我聽到你說的是,因爲一個空白的GUID甚至沒有註冊一個組件,它應該對其他組件沒有影響。是對的嗎? – 2009-10-14 18:03:43
是的,一般來說,空白的GUID應該對其他組件沒有影響,因爲MSI在安裝文件後忽略它。但是,很少有一個事實沒有修改:由空白GUID安裝的文件將不會被卸載。如果這是一個版本化文件,並且在添加一個guid之前不更改安裝位置,理論上可能現有文件可能會阻止安裝新文件版本(如果現有文件是較高版本)。如果您使用次要升級,還有一些其他不太可能的情況,但如果您不使用它,我不會進入它。 – 2009-10-14 19:13:27
感謝您的詳細解答!最後,讓其他所有東西能夠正確解除(從MSI日誌中刪除PreviouslyPinned = 1引用),我必須進入該PC上的註冊表,並從 HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Installer \ UserData \ \ Components基於我在這裏發現的提示http://blogs.msdn.com/icumove/archive/2008/06/17/windows-installer-error-2908-with-sub-errors- 1402-and-1450.aspx –
2009-10-16 08:21:10