Windows lưu tập tin MSI ở đâu để gỡ cài đặt?


25

Tôi đang cố gắng tìm ra cách Windows (XP đến 7) xử lý việc cài đặt và gỡ cài đặt các tệp MSI. Tôi đã gặp phải tình huống Windows Installer không thể gỡ cài đặt vì nó thiếu tệp MSI gốc, điều này khiến tôi tin rằng nó lưu một bản sao của tất cả các gói MSI đã cài đặt ở đâu đó. Ở đâu?

Tôi đã có một vài lý thuyết.

  1. Nó hy vọng nó sẽ nằm trong cùng thư mục được cài đặt từ đó. Các khóa đăng ký HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstallkhông trỏ đến thư mục cài đặt gốc và các thông báo lỗi khi thiếu tệp MSI thường trỏ đến điều này. Tuy nhiên, việc xóa tệp MSI khỏi thư mục này không cản trở quá trình gỡ cài đặt, vì vậy tôi đã từ chối lý thuyết này.

  2. C:\Windows\Installer. Thư mục này thực sự chứa một loạt các tệp MSI dường như được đặt tên ngẫu nhiên. Nhưng danh sách này không đầy đủ. Tôi tìm thấy các mục trong khóa đăng ký được đề cập trong 1) không có bản sao MSI trong thư mục này.

Vậy làm thế nào để làm việc này? Làm thế nào để trình cài đặt windows có thể gỡ cài đặt các ứng dụng do MSI cài đặt mặc dù MSI không ở 1) và không ở 2)?


Windows không phải lúc nào cũng giữ nó. Có nhiều cách để người dùng yêu cầu Windows thực sự xóa bộ nhớ cache của các tệp này. Nếu bạn có phần mềm không thể gỡ cài đặt thì có nghĩa là nhà phát triển đã xây dựng trình cài đặt sai. Vị trí sẽ khác nhau giữa Windows XP (tại sao bạn lo lắng về hệ điều hành không được hỗ trợ) và Windows 7 và / hoặc Windows 8.
Ramhound

Câu trả lời:


44

Rõ ràng nó hoạt động như thế này (Trên Windows 7, tôi không biết về XP và các HĐH khác):

Khi người dùng cài đặt một số ứng dụng, Windows sẽ thực hiện như sau:

1) Tạo khoá đăng ký

HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ [ProductId GUID]

cho ứng dụng này.

Nếu bạn có quyền truy cập vào tệp msi gốc của trình cài đặt ứng dụng của mình, bạn có thể tìm thấy [ProductID GUID] bằng cách mở tệp msi trong orca.exe và nhấp vào "Thuộc tính" ở bên trái trong orca và tìm kiếm "ProductCode" dòng bên phải. Nếu bạn không có quyền truy cập vào tệp * .msi ban đầu, bạn chỉ có thể tìm kiếm khóa đăng ký HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall cho tên của ứng dụng.

Nếu bạn muốn xóa ứng dụng của mình (ví dụ từ chối gỡ cài đặt) khỏi danh sách các ứng dụng đã cài đặt trong Bảng điều khiển, bạn có thể xóa mục nhập khỏi khóa Gỡ cài đặt này. Nó chắc chắn sẽ biến mất khỏi danh sách trong bảng điều khiển, nhưng Windows vẫn sẽ nhớ nó. Ví dụ: nếu bạn cố gắng cài đặt phiên bản tiếp theo của cùng một ứng dụng, Trình cài đặt vẫn có thể nhấn mạnh vào việc gỡ cài đặt phiên bản trước đó. Xem mục 2 cho điều đó.

2) Windows sao chép tệp * .msi ban đầu vào thư mục C: \ Windows \ Installer và đổi tên thành tên ngẫu nhiên (mặc dù vẫn giữ phần mở rộng .msi). Windows cũng tạo một khóa trong sổ đăng ký trong HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\[InternalUserId]\Products\[some random guid-like sequence of chars identifying to windows your installation]\InstallProperties.ValueName "LocalPackage" trong khóa reg này sẽ trỏ đến tệp msi được đổi tên. Để tìm tệp trong C: \ windows \ Installer, bạn có thể điều hướng đến thư mục này trong Windows explorer, chuyển nó sang dạng xem Chi tiết, hiển thị cột "Chủ đề" và bạn sẽ thấy tất cả nnnnnnnn.msi đánh dấu tên sản phẩm tương ứng của họ.


6
Tôi muốn bầu bạn hai lần cho bí mật ẩn giấu - make column "Subject" visible and you will see for all nnnnnnnn.msi fies their corresponding name of product.. Windows là một hệ điều hành bí ẩn như vậy: P
RBT

3) Bước 3 là cần thiết đối với tôi. Tôi đã phải sao chép tệp 5188bfc6.msi (hex # .msi) và đổi tên thành tên tệp gốc MyApp.msi, trước khi trình gỡ cài đặt chấp nhận tệp. Sau khi gỡ cài đặt này hoạt động tốt.
Joe B
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.