2012-11-09 22 views
10

Có thể ai đó chi tiết hoặc chỉ cho tôi một số thông tin về vai trò chính xác mà DFSVC.EXE phát trong chu kỳ thực thi của một ứng dụng ClickOnce không? Nếu tôi khởi chạy ứng dụng ClickOnce qua:ClickOnce runtime DFSVC.EXE

rundll32.exe dfshim.dll,ShOpenVerbApplication http://www.domain.com/application/?param1=foo 

Tôi thấy rằng quá trình DFSVC.EXE được bắt đầu. Sau đó tôi thấy rằng quá trình EXE thực tế của ứng dụng ClickOnce của tôi được gọi (bởi DFSVC.EXE, được liệt kê dưới dạng tiến trình cha trong ProcessExplorer). Tại thời điểm này, tôi có thể giết DFSVC.EXE qua:

rundll32.exe dfshim.dll,KillService 

và ứng dụng ClickOnce của tôi tiếp tục chạy. Tôi cũng nhận thấy rằng nếu tôi không giết DFSVC.EXE, nó sẽ tự biến mất sau khoảng 15 phút.

Tôi nghi ngờ rằng DFSVC.EXE chịu trách nhiệm tải xuống, cài đặt và khởi chạy ứng dụng - điều này có đúng không? Có cách nào để yêu cầu DFSVC.EXE tự động tắt sau khi các tác vụ này hoàn tất cho một ứng dụng ClickOnce được gọi không? Là lý do nó là sự bền bỉ (ngay cả sau khi các ứng dụng ClickOnce được tắt) một tối ưu hóa cho các cuộc gọi tiếp theo của một ứng dụng ClickOnce?

+3

Câu trả lời ngắn: Tôi tin rằng TẤT CẢ các dự đoán của bạn là chính xác. Nếu bạn xem trong Fiddler, bạn thấy rằng DFSVC thực hiện việc kiểm tra phiên bản/tệp kê khai phiên bản và đó là một mẫu rất phổ biến để giữ các loại dịch vụ này trong một khoảng thời gian như là một tối ưu hóa hoàn hảo. – EricLaw

Trả lời

4

DFSVC.EXE kiểm tra xem ứng dụng đã được cài đặt và cập nhật chưa (nếu được định cấu hình), nếu yêu cầu tải ứng dụng xuống ClickOnce Folder trong Users AppData rồi khởi chạy nó từ vị trí hiện tại (thay đổi với mọi cập nhật). Nó cũng phải xóa phiên bản trước của ứng dụng mà nó có thể có thể làm trong nền sau đó.