2010-04-29 35 views
6

Cách gỡ cài đặt ứng dụng Silverlight 4 ngoài trình duyệt thay vì sử dụng contextmenu (ví dụ: nếu tôi muốn thay thế menu ngữ cảnh)?Gỡ cài đặt ứng dụng Silverlight ngoài trình duyệt theo lập trình

Sửa

tôi đã tìm thấy trong "Installing Silverlight applications without the browser involved" làm thế nào để gỡ bỏ cài đặt bằng cách gọi dòng lệnh:

"% ProgramFiles% \ Microsoft Silverlight \ sllauncher.exe"/gỡ bỏ cài đặt/xuất xứ: Silverlight .net/content/mẫu/apps/...

này có thể được sử dụng trong: -

dynamic cmd = AutomationFactory.CreateObject("WScript.Shell"); 
cmd.Run(run, 1, true); 

Có giải pháp nào tốt hơn không?

+0

Tôi đã tìm thấy trong http://timheuer.com/blog/archive/2010/03/25/ using-sllauncher-for-silent-install-silverlight-application.aspx cách gỡ cài đặt bằng cách gọi dòng lệnh: "% ProgramFiles% \ Microsoft Silverlight \ sllauncher.exe" /uninstall /origin: http://www.silverlight.net/content/samples/apps/facebookclient/ClientBin/Silverface.xap Điều này có thể được sử dụng trong động cmd = AutomationFactory.CreateObject ("WScript.Shell"); cmd.Run (chạy, 1, đúng); Có giải pháp nào tốt hơn không? –

+0

Vui lòng sử dụng tính năng chỉnh sửa câu hỏi để bao gồm thông tin bổ sung thay vì nhận xét. – AnthonyWJones

+3

Tôi quá tự hỏi, làm thế nào để làm điều đó trên máy Mac? Gosh ... ngay cả trong phiên bản thứ năm của SL, một số trong số các công cụ trình duyệt trông rất xấu xí. Tại sao tôi không thể gọi trực tiếp ứng dụng từ trình duyệt nếu ứng dụng đã được cài đặt? Tại sao tôi không thể gỡ cài đặt nó (ý tôi là trong mã)? Tại sao CheckAndDownloadUpdateAsync() không phải lúc nào cũng hoạt động ... – Agzam

Trả lời

1

Khá nhất định này là không thể mà không cần đến COM Interop như Mike nói, tôi cũng muốn hỏi nếu đó là một ý tưởng tốt vì:

1) Loại bỏ các tùy chọn gỡ bỏ cài đặt sẽ không nghi ngờ làm phiền nhiều người dùng và thực hành không tốt. 2) Bạn nói rằng bạn đang tìm cách triển khai thực đơn ngữ cảnh mới? Trừ khi đây là một ứng dụng LOB, tôi sẽ cảnh giác với điều này vì nhiều người dùng sẽ không được sử dụng để truy cập các menu ngữ cảnh trong một ứng dụng web mà với tôi là HCI nghèo nàn. Nếu nó là một ứng dụng LOB thì Add/remove programs sẽ là một giải pháp OK?

+0

Bạn cũng có thể muốn có một nút để cài đặt và một nút khác để gỡ cài đặt (là trường hợp của tôi). Thay thế trình đơn nhấp chuột phải cũng hữu ích cho tôi, để đặt những thứ rất tiên tiến, nhưng mất lệnh gỡ cài đặt buộc tôi phải quên đi giải pháp đó. – jv42

2

Tôi không chắc chắn bạn có thể làm điều này theo chương trình.

Một tùy chọn là yêu cầu người dùng sử dụng Thêm/loại bỏ chương trình để xóa.

Cách khác là sử dụng tùy chọn cài đặt im lặng để xóa nó (liên kết - http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2010/03/24/silverlight-4-rc-and-the-silent-installation.aspx) nhưng điều đó liên quan đến các cuộc gọi interop COM.

Mike.

1

Giải pháp bạn đã đề cập vẫn là cách duy nhất tôi biết để làm điều đó. Đó là một liên lạc tốt đẹp đặt một Application.Current.MainWindow.Close(); sau khi nó mặc dù là ứng dụng sẽ vẫn chạy sau khi bạn gỡ bỏ cài đặt.

Marc

1

Đây không phải là câu trả lời nhưng nó liên quan đến vấn đề của bạn. Trong danh sách yêu thích Silverlight chính thức, tôi đã thêm khả năng làm điều này khá lâu trước đây. May mắn thay, khá ít người dùng đồng ý. Với đủ số phiếu bầu, hy vọng nó sẽ xuất hiện trong một phiên bản tương lai của Silverlight.

http://dotnet.uservoice.com/forums/4325-silverlight-feature-suggestions/suggestions/410706-greater-control-over-installation-in-oob

0

Check-out giải pháp của tôi ở đây: Unable to Uninstall SIlverlight Out Of Browser Application Programatically tôi đã sử dụng mã trong nó trong giao diện điều khiển ứng dụng đã được điều hành bởi các ứng dụng Silverlight rằng nó đã được gỡ bỏ cài đặt. Silverlight trích xuất EXE làm tài nguyên cho một trong các thư mục và sau đó chạy nó bằng cách sử dụng một cái gì đó như sau:

using (dynamic shell = AutomationFactory.CreateObject("WScript.Shell")) 
{ 
    shell.Run(@"C:\Users\yourusername\AppData\update.exe xapNameToUninstall"); 
} 
Các vấn đề liên quan