2012-01-05 37 views
12

Mục tiêu của tôi là thực sự đạt được việc khởi chạy ứng dụng ClickOnce của tôi chỉ bằng một cú nhấp chuột (hoặc hai lần tôi đoán). Ứng dụng này có một số điều kiện tiên quyết cần được cài đặt. Cách thông thường để đảm bảo chúng được cài đặt mà Microsoft cung cấp liên quan đến việc người dùng quyết định liệu anh ta có điều kiện tiên quyết hay không và tải xuống và cài đặt "setup.exe" cài đặt chúng và chạy ứng dụng ClickOnce. Điều này liên quan đến việc tải xuống tệp EXE (một cú nhấp chuột), chạy nó (hai lần nhấp), sau đó sau khi các điều kiện tiên quyết được cài đặt, hãy bấm lại để chạy ứng dụng ClickOnce.Khởi chạy ứng dụng ClickOnce từ một ứng dụng ClickOnce khác

Tôi đang cố gắng giảm quy trình này xuống một hoặc hai lần nhấp: - Nhấp vào liên kết trên trang web của tôi đến tệp ClickOnce .application. - Nhấp một lần nữa để chạy nó.

Tôi đã thực hiện MỘT ứng dụng ClickOnce khác, bao gồm tệp setup.exe. Nó sẽ kiểm tra nếu các điều kiện tiên quyết được cài đặt, và nếu chúng được chạy tự động ứng dụng ClickOnce khác. Nếu không, nó chạy setup.exe đi kèm và sau đó chạy ứng dụng ClickOnce khác.

Vấn đề của tôi là khi tôi cố gắng chạy ứng dụng ClickOnce khác từ ứng dụng này, nó chỉ cần mở trình duyệt web của tôi và tải xuống tệp .application mà không cần chạy nó.

Tôi đang cố gắng để sử dụng sau đây để khởi động ứng dụng ClickOnce từ bên trong mã của tôi # C:

Process.Start(ApplicationURL); 

Tôi chỉ muốn này để tự động khởi động ứng dụng tại ApplicationURL. Có cách nào để bỏ qua sự tham gia của trình duyệt mà tôi thấy không?

(Câu hỏi của tôi rất giống với câu hỏi về Stack Overflow Run a ClickOnce application from a webpage without user action).

+0

Trình duyệt mặc định của bạn là gì?Bạn đã thử: 'Process.Start (" iexplore.exe ", ApplicationURL)'? –

+2

Ok Tôi chỉ tìm thấy câu trả lời cho câu hỏi của riêng mình. Vấn đề là trình duyệt mặc định của tôi là google chrome, mà không hoàn toàn biết cách xử lý các ứng dụng clickOnce. Tôi đã thay đổi mã của mình thành: ProcessStartInfo startInfo = new ProcessStartInfo ("Iexplore"); startInfo.Arguments = ApplicationURL; Process agentStudio = Process.Start (startInfo); Bây giờ, ứng dụng sẽ khởi chạy ứng dụng bằng trình khám phá internet và ứng dụng hiện thực sự hoạt động như một ứng dụng "một cú nhấp chuột". – Jschiff

+0

Cảm ơn M. Babcock, đã phát hiện ra nó một cách độc lập khi bạn trả lời! – Jschiff

Trả lời

16

Như đã nêu trong các nhận xét, bạn có thể bắt đầu quy trình iexplore.exe để khởi chạy ứng dụng ClickOnce mà không cần bất kỳ sự phụ thuộc nào trên trình duyệt mặc định. Bạn cũng có thể khởi chạy ứng dụng ClickOnce giống như cách Windows Explorer khởi chạy ứng dụng, sử dụng dfshim.dll.

Process.Start("rundll32.exe", "dfshim.dll,ShOpenVerbApplication " + ApplicationURL); 

Có một vài bài báo trực tuyến khác mà thảo luận về sử dụng chiến lược này, nhưng tôi đã không tìm thấy bất kỳ documenation chính thức của dfshim.dll, ShOpenVerbApplication.

  • Another Stack Overflow question đề cập đến sử dụng tùy chỉnh .exe để cài đặt .NET Framework và sau đó khởi chạy ứng dụng ClickOnce qua ứng dụng ShOpenVerbApplication.
  • Scott Hanselman discusses ShOpenVerbApplication làm ánh xạ tệp mặc định cho các tệp có loại MIME ứng dụng/x-ms trong bài đăng về Firefox và ClickOnce.

Cập nhật

Như câu hỏi Stack Overflow khác đề cập, bạn cũng có thể sử dụng dfshim.dll 's LaunchApplication lệnh, đó là documented on Microsoft's site. Tuy nhiên, lệnh đó không có sẵn trong một số phiên bản cũ hơn của .NET Framework.

+0

Những công việc tuyệt vời, nhưng làm thế nào tôi có thể nhận được thông qua xác thực? Các trang web SSRS đòi hỏi một, và không có các thông tin đăng nhập tải xuống ứng dụng không thành công. Tôi đang thử nghiệm với sự kết hợp của InPlaceHostingManager (tôi biết về nó đã, đã đưa ra một +1 để @ dgp) và một điều khiển trình duyệt web nhúng ẩn, nhưng có vẻ xấu xí. –

1

Hãy xem Microsoft walkthrough để cài đặt thủ công qua InPlaceHostingManager. Bạn có khả năng tùy chỉnh theo chương trình.

+0

Giải pháp tuyệt vời để cài đặt ứng dụng nhưng không thể "khởi chạy" ứng dụng. Từ tài liệu: "InPlaceHostingManager có thể cài đặt ứng dụng ClickOnce, nhưng không thể thực thi nó. Một số phương pháp trong lớp này, chẳng hạn như Execute, được dành riêng để sử dụng khi tải xuống ứng dụng dựa trên nền tảng Windows Presentation chạy bên trong trình duyệt Web." Phương pháp dfshim cho phép cài đặt và khởi chạy. – mikdav

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