2008-10-30 23 views
5

Chúng tôi có một CustomAction đặt một số khóa registry HKEY LOCAL_MACHINE. Điều này đã không được làm việc trên Vista với UAC, cho đến khi chúng tôi thực hiện hành động "hoãn lại". Trình cài đặt hoạt động trong các trường hợp khác. Có ai biết tại sao không?Tại sao MSI CustomAction đặt khóa reg cần được khử trên Vista bằng UAC?

Chúng tôi đang sử dụng WIX để tạo trình cài đặt.

Trả lời

4

Hành động tùy chỉnh của bạn đã được chạy ngay lập tức khi nó gặp phải trong InstallExecuteSequence; thay vì khi tập lệnh cài đặt thực tế được thực thi. Điều này khiến hành động tùy chỉnh của bạn được thực thi với quyền của người dùng hơn là với các quyền nâng cao của hệ thống. Loạt bài đăng trên blog này sẽ giải thích chi tiết những gì đang diễn ra, http://blogs.msdn.com/rflaming/archive/2006/09/23/768146.aspx. Bạn không nên có các hành động tùy chỉnh có hiệu lực trạng thái của máy không chạy như các hành động tùy chỉnh bị trì hoãn.

11

+1 Lance. Để cụm từ nó một cách khác và đưa ra một số biết thêm

Có 2 bước trong quá trình MSI

  • ngay - nơi bạn thu thập các sở thích (cài đặt dir vv) - không cần thay đổi máy nên được thực hiện đây

và sau đó

  • Hoãn - chạy sau khi tất cả các sở thích đã được thu thập và thực sự cài đặt.

Vài suy nghĩ thêm

  • ngay có thể không luôn luôn được chạy (ví dụ kịch bản cài đặt) do đó, không dựa vào nó.

Có 2 chế độ cho một hoãn hành động có thể chạy trong

  • NoImpersonate - aka NT Authority \ System có sự cho phép đầy đủ trên máy tính của bạn

  • Mạo danh - bất cứ ai khởi động cài đặt.

Với UAC được bật Mạo danh có dấu đầu dòng. You will only have the standard user token and no admin rights, ngay cả khi người dùng thực sự là quản trị viên - vì vậy hãy giữ cho NoImpersonate nếu có thể nếu không hành động tùy chỉnh của bạn sẽ không thể thực hiện bất kỳ điều gì.

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