2012-06-28 26 views
9

Tôi có thể liệt kê GUID của chương trình đã cài đặt trong Windows bằng cách nào? Ngoài ra, nó là dễ dàng hơn để tìm GUID nếu tôi có tập tin MSI?Tìm GUID Từ Tập tin MSI

Tôi đang xem qua tệp MSI với Orca nhưng không chắc chắn nên tìm ở đâu để tìm GUID.

Cảm ơn!

+1

Bạn sẽ cần phải cụ thể hơn. Bạn đang tìm kiếm GUID nào? Một sản phẩm điển hình sẽ có rất nhiều GUID cho nhiều mục đích khác nhau. –

+0

Thêm một câu trả lời mới dưới đây để liệt kê một vài tùy chọn đơn giản nhất để truy xuất GUID này từ bất kỳ hệ thống nào. –

Trả lời

10

Ba GUID chính của cơ sở dữ liệu Trình cài đặt Windows là Package Code, ProductCodeUpgradeCode. Dữ liệu đầu tiên được lưu trữ trong luồng thông tin tóm tắt (Xem trình đơn trong Orca), và các thông tin khác được lưu trữ trong bảng Thuộc tính. (Các dạng cơ sở dữ liệu khác như các mô-đun kết hợp và các bản vá lỗi có GUID tương tự ở các vị trí tương tự, chẳng hạn như GUID của mô đun hợp nhất hoặc mã bản vá GUID - mỗi được lưu trữ giống hệt mã gói.)

Để tìm chúng trên máy, bạn có thể tìm trong khóa Gỡ cài đặt, nơi Mã Sản phẩm thường được sử dụng. Hoặc tốt hơn, nếu bạn đang tìm kiếm để liệt kê những gì hiện đang được cài đặt trên máy, bạn có thể gọi MsiEnumProducts.

1

Thông thường (mặc dù không phổ biến) nếu một phần mềm sử dụng cài đặt dựa trên MSI GUID có thể được tìm thấy trong mục Gỡ cài đặt. Nó thường sẽ là tên khóa hoặc sẽ xuất hiện trong giá trị UninstallString và/hoặc UninstallPath. Đôi khi cuộc sống dễ dàng và có giá trị ProductGuid.

mục Uninstall có thể được tìm thấy ở đây:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 

Trên một phiên bản 64-bit của Windows có hai phím như vậy, một cho phần mềm 64-bit và một giây cho phần mềm 32-bit:

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall 
4

Có một số cách để tìm sản phẩm GUID cho gói đã cài đặt. Vui lòng thích tùy chọn số 3.

Phổ biến nhất là:

  1. Kiểm tra trong registry bên dưới đường cơ sở sau đây sử dụng regedit.exe. Tìm kiếm tên ứng dụng (hoặc chỉ duyệt qua từng thư mục con cho đến khi bạn tìm thấy nó). Khi bạn đã tìm thấy nó, bạn có thể vượt qua nó để msiexec.exe:
- 32-BIT SECTION: 

HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall 
HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall (per user section) 
- 64-BIT SECTION: 

HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall 
- MERGED SECTION (supposedly all of the above merged together, I have not verified): 

HKCR\Installer\Products 
  1. Kiểm tra MSI gói tại địa phương cache trong % SystemRoot % \ Installer. Đây là phiên bản được lưu trong bộ nhớ cache của MSI gốc ban đầu được sử dụng để cài đặt sản phẩm trên máy tính của bạn.
    • Bạn sẽ cần một công cụ có khả năng mở tệp MSI. Dưới đây là danh sách và so sánh các tính năng: What installation product to use? InstallShield, WiX, Wise, Advanced Installer, etc.
    • MSI là cơ sở dữ liệu MS SQL trong ngụy trang, bạn cũng có thể mở nó bằng bất kỳ công cụ xem dữ liệu MS SQL tương thích nào.
    • Công cụ MSI miễn phí "Orca" từ Windows SDK là tùy chọn ưu tiên cho nhiệm vụ truy xuất dữ liệu đơn giản này. Nó nhanh chóng, nhỏ và đáng tin cậy.
    • Sau đó làm theo lời khuyên của Michael Uhrman từ câu trả lời ở trên và tìm mã gói trong luồng tóm tắt và nâng cấp và mã sản phẩm trong bảng Thuộc tính. Mã gói cũng hiển thị từ trang thuộc tính của tệp MSI trong Windows Explorer.
  2. Sử dụng Powershell để liệt kê thông tin gói. Tôi thấy điều này là lựa chọn dễ nhất và thiết thực nhất. Xem câu trả lời này cho một ảnh chụp màn hình và một mẫu: How can I find the product GUID of an installed MSI setup?

Nếu những gì bạn đang cố gắng làm là để gỡ bỏ cài đặt các sản phẩm trong câu hỏi, xem comprehesive gỡ bỏ cài đặt MSI câu trả lời này: Uninstalling an MSI file from the command line without using msiexec

Nếu bạn cảm thấy thoải mái hơn khi sử dụng VBScript thay vì Powershell, vui lòng thử câu trả lời này từ Phil Wilson: how to find out which products are installed - newer product are already installed MSI windows

-1

Giải pháp của tôi là tôi đã viết một giao diện điều khiển nhỏ ap p mà trả về ProductCode của bất kỳ tập tin MSI (tên được thông qua như là đối số chương trình). Tôi đang làm nó bằng cách đọc các guid từ tập tin .msi chính nó. Về cơ bản tôi đang mở tập tin msi đó như một chuỗi và tìm kiếm một văn bản bắt đầu bằng "ProductCode", lấy chỉ mục của nó và lấy 38 ký tự trước vị trí chỉ mục đó. Đây là ảnh chụp màn hình: screenshot

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