2010-07-20 28 views
43

Khi iam cố gắng tạo trình cài đặt, tôi nhận được lỗi sau:Thư mục xx nằm trong hồ sơ người dùng nhưng không được liệt kê trong bảng RemoveFile.

Thư mục ProgramMenuDir nằm trong hồ sơ người dùng nhưng không được liệt kê trong bảng RemoveFile.

Làm cách nào để giải quyết vấn đề này? bên dưới là cấu trúc thư mục tôi đang sử dụng.

<Directory Id="ProgramMenuFolder" Name="Programs"> 
     <Directory Id="ProgramMenuDir" Name="E"> 
       <Directory Id="Monarch" Name="Monarch"> 
        <Component Id="Monarch" Guid="E510F3DA-82AA-11DF-8814-8970DFD72085">      
         <RemoveFolder Id='Monarch' On='uninstall' /> 
       <RemoveFolder Id='ProgramMenuDir' On='uninstall' /> 

        <RegistryValue Root='HKCU' Key='Software\[Manufacturer]\[ProductName]' Type='string' Value='' KeyPath='yes' /> 
        </Component> 
       </Directory> 
     </Directory> 
    </Directory> 

Trả lời

63

Theo tôi có thể thấy, sự cố là khi sử dụng phần tử <RemoveFolder/>. Nếu thuộc tính 'Directory' bị bỏ qua, nó sẽ lấy thư mục của thành phần cha. Trong trường hợp của bạn, nó là một thư mục với Id = "EFIMonarch". Điều này giải thích tại sao bạn nhận được cảnh báo cho thư mục bên ngoài (ProgramMenuDir), nhưng không nhận được nó cho thư mục EFIMonarch.

Hãy thử thay thế:

<RemoveFolder Id='ProgramMenuDir' On='uninstall' /> 

với

<RemoveFolder Id='RemoveProgramMenuDir' Directory='ProgramMenuDir' On='uninstall' /> 

Ngoài ra, nó là một ý tưởng tốt để được rõ ràng cho mọi phần tử RemoveFolder.

Hy vọng điều này sẽ hữu ích.

+17

Trong trường hợp của tôi, tôi đã nhìn thấy lỗi này vì tôi đã quên thêm thành phần làm đối tượng địa lý. – briantyler

+0

@TheMouthofaCách tương tự cho tôi. –

+1

vâng, cuối cùng sau 2 ngày tìm kiếm – Gilad

1

Chỉ cần viết điều này cho một số người khác có thể vẫn gặp phải sự cố này ngay cả sau khi làm theo câu trả lời cho câu hỏi này.

Tôi đã gặp vấn đề tương tự và thậm chí sau khi chỉ định rõ ràng Thư mục trong RemoveFolder không giúp tôi, tôi đã cố gắng đặt DirectoryRef này chứa các phần tử cài đặt/gỡ cài đặt ngay sau TARGETDIR trong cùng một đoạn và giúp khắc phục vấn đề của tôi.

Các vấn đề liên quan