2017-09-22 30 views
1

我有wix安裝程序和bootstraper的某些應用程序,在他的工作過程中在應用程序文件夾中創建了額外的文件,我必須在卸載過程中刪除這些文件。據https://www.hass.de/content/wix-how-use-removefolderex-your-xml-scripts和其他同樣的例子我的代碼下一個部分:WIX util:RemoveFolderEx不起作用

  1. 定義屬性:

    <Property Id="APPLICATIONFOLDER"> 
        <RegistrySearch Key="SOFTWARE\ProductName" 
            Root="HKLM" 
            Type="raw" 
            Id="APPLICATIONFOLDER_REGSEARCH" 
            Name="Path" /> 
    </Property> 
    
  2. 定義組件:

    <Directory Id="APPLICATIONFOLDER" Name="ProductName"> 
        <Component Id="RemoveAll" Guid="some-guid"> 
        <RegistryValue Root="HKLM" 
            Key="Software\ProductName" 
            Type="string" 
            Name="Path" 
            Value="[APPLICATIONFOLDER]" 
            KeyPath="yes"/> 
        <util:RemoveFolderEx On="uninstall" 
             Property="APPLICATIONFOLDER" /> 
        </Component> 
    </Directory> 
    
  3. 添加組件功能:

    <Feature Id="ProductFeature" Title="ProductName" Level="1"> 
        ... 
        <ComponentRef Id="RemoveAll" /> 
        ... 
    </Feature> 
    

然後,當我試圖卸載該應用程序,我有威克斯日誌下一行:

... 
MSI (s) (B4:64) [13:05:58:798]: PROPERTY CHANGE: Adding APPLICATIONFOLDER property. Its value is 'C:\Program Files(x86)\ProductName\' 
... 
Action start 13:05:58: WixRemoveFoldersEx. 
MSI (s) (B4:48) [13:05:58:914]: PROPERTY CHANGE: Adding _APPLICATIONFOLDER_0 property. Its value is 'C:\Program Files (x86)\ProductName\'. 
WixRemoveFoldersEx: Recursing path: C:\Program Files (x86)\ProductName\ for row: wrfE932DA8DA501DD981493D5D9F4EFDD75. 
MSI (s) (B4:64) [13:05:58:918]: Doing action: CostInitialize 
MSI (s) (B4:64) [13:05:58:918]: Note: 1: 2205 2: 3: ActionText 
Action ended 13:05:58: WixRemoveFoldersEx. Return value 1. 
... 

但沒有heppens和所有其他文件都存在於應用程序文件夾,並相應的文件夾也存在。我不知道爲什麼,我不知道需要改變什麼來解決這個問題。

有人能幫助我嗎?

回答

0

在刪除文件夾之前,您需要刪除應用程序創建的所有文件。嘗試是這樣的:

<Component Id="RemoveOrphanFiles" Guid=InsertGUID KeyPath="yes"> 
    <RemoveFile Id="RemoveFiles" Name="*.*" On="uninstall" /> 
</Component> 

,並添加一個條件,使其只在卸載運行... 希望這有助於!