2016-06-13 97 views
2

一些月前我發佈了這個關於多重安裝的question,並且我嚴格按照example提示我。 它工作得很好,但我嘗試刪除默認實例。 當我鍵入Wix工具集多實例安裝

msiexec /x MyInstaller.msi 

我的應用程序「邏輯」去掉,但沒有文件夾和文件不被刪除我的機器上

下面是代碼:

<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Component Id="comp_67F76B3C_8D92_4DCF_8C51_42E51502C4A3" Guid="28C71156-F612-49ED-A4E9-0CB598AA84AB" MultiInstance="yes"> 
    <CreateFolder/> 
    </Component> 
    <Component Id="comp_AA102B27_0657_498D_9CD5_683C4F33B5E2" Guid="0F601C97-CDFF-4614-A608-B42253240E2C"> 
    <File Id="_C72F9A1F_AF4A_47A3_928C_238643ABA5D4" Name="CrashReportManager.exe" Source="..\workspace\Release\CrashReportManager.exe" KeyPath="yes" /> 
    </Component> 
    <Component Id="comp_442142FD_D0B8_410C_8904_E73047757FAB" Guid="0A1AE820-0FF7-442C-8333-9FEFA2E3F33C"> 
    <File Id="_CA463C5C_E397_40E6_9B7B_28CCA647D0CA" Name="BCGCBPRO2440d120.dll" Source="..\workspace\Debug\BCGCBPRO2440d120.dll" KeyPath="yes" /> 
    </Component> 
    <Directory Id="dir_350BD3EA_2F6C_4AD4_A960_8AB2C40F4F36" Name="Docs"> 
    <Component Id="DocFolderId" Guid="32DAE480-7C01-4BAA-B99D-9FE8D7D43369" MultiInstance="yes">   
     <CreateFolder /> 
    </Component> 
    <Component Id="comp_FFFDE3FE_1205_4E74_82B1_E832501A096C" Guid="EECC223C-EBAD-43CA-9F3C-4A19FD9E7429"> 
     <File Id="_D0FE1868_D0D7_4778_8BC6_D40FE2B21DB2" Name="ModuleList(1).txt" Source="..\ModuleList(1).txt" KeyPath="yes" /> 
    </Component> 
    <Component Id="comp_07E32598_CA8D_46B6_A3D6_DA36FD308E1F" Guid="FCCC41AA-17BC-4ADA-925D-631A614C9F80"> 
     <File Id="_894CFDFB_4514_4CAC_86C3_426CC6836B7C" Name="ModuleList(2).txt" Source="..\ModuleList(2).txt" KeyPath="yes" /> 
    </Component> 
    <Component Id="comp_21465088_A65C_43D4_A038_93412404BA91" Guid="67D18D29-6466-4D36-A279-A9396A62019C"> 
     <File Id="_C9362477_88D8_463C_B77D_7097255F5E13" Name="ModuleList.txt" Source="..\ModuleList.txt" KeyPath="yes" /> 
    </Component> 
    <Component Id="comp_3C85BB37_5715_45E7_A135_C640D7348360" Guid="6DDB0F88-7346-4221-8FB1-106C5F707EE5"> 
     <File Id="_BFE55263_BD18_427B_9F87_30403BB2540D" Name="ReadMe.txt" Source="..\ReadMe.txt" KeyPath="yes" /> 
    </Component> 
    </Directory> 
</Directory> 

有什麼不對?

+0

的,你不需要用''內部部件。只要有其他文件組件,就會創建它的父目錄。所以,你可以嘗試刪除它,看看會發生什麼。順便說一句,當你編譯/鏈接你的MSI時,是否有任何警告? –

+0

在創建安裝程序期間在同一臺計算機上安裝多個安裝時,您可能會遇到幻像組件引用或虛假安裝的情況。您應該使用'/ l * v log.txt'運行以查看是否有多個組件被多個安裝引用。另外,如果您有默認情況下未安裝的條件功能,如果您未將「或已安裝」置於使該功能在卸載過程中得不到滿足的條件下,可能會導致問題。 –

回答

1

您在所有組件中都使用了KeyPath="yes"。這意味着,例如,如果您要修復安裝,這樣的組件將用作Windows安裝程序的檢查點。這意味着它是應用程序運行所必需的強制性組件

由於您使用的多個實例,而你提到你安裝的不僅僅是默認情況下,Windows安裝不會刪除關鍵部件,直到實例的最後一個越來越卸載以上(即它會跟蹤他們的內部有參考計數器)。

0

爲每個組件使用MultiInstance="yes",像燕說,在這個特殊的例子擺脫<CreateFolder/>組件