2009-04-15 41 views
8

Tôi có một ứng dụng Windows cf 3.5 Windows Mobile mà khách hàng của tôi muốn có các tính năng tự động sửa.Cách tự động cập nhật ứng dụng Windows Mobile

Dưới đây là những gì tôi có cho đến nay:

  1. tạo CAB bằng cách sử dụng Dự án CAB thông minh thiết bị (được này đủ tốt, hay tôi nên làm cái gì khác ở đây)

2. lấy số phiên bản ứng dụng

Assembly.GetExecutingAssembly().GetName().Version.ToString(); 
  1. Gọi một dịch vụ web WCF cho làm một số phiên bản nhìn lên.
  2. Tải xuống phiên bản mới của tệp cab.
  3. ???
  4. Execute WCELoad.exe vào file CAB
  5. Lợi nhuận

Trả lời

9

Giải pháp của bạn nói chung là chính xác nhưng có một số vấn đề.

  1. Bạn không thể tự cập nhật. Bạn phải tắt và có một số ứng dụng otehr cập nhật bạn để ngăn chặn vấn đề chia sẻ tập tin. Điều này thường được xử lý bằng cách có một ứng dụng "cập nhật" chuyên dụng mà bạn khởi chạy. Nó có thể là mục tiêu của biểu tượng ứng dụng và do đó thực hiện cập nhật với mỗi lần khởi chạy hoặc có thể được khởi chạy thông qua mục "kiểm tra cập nhật" loại mục menu. Bất kể, bạn phải khởi chạy ứng dụng và đảm bảo ứng dụng thực tế không chạy.
  2. Thường là một ý tưởng tốt để cung cấp một số hình thức sao lưu trong trường hợp bị hỏng, bị gián đoạn cài đặt
  3. Cập nhật CAB sẽ yêu cầu cập nhật bán buôn mọi thứ. Đây có thể không phải là những gì bạn muốn cuối cùng (bạn có thể muốn cập nhật chỉ là một tập tin duy nhất, lắp ráp hoặc bất cứ điều gì) để bắt đầu với logic của kéo xuống các tập tin cá nhân sẽ làm cho bạn cách mở rộng hơn.

Tài nguyên cũ nhưng vẫn rất hợp lệ là Alex Feinman MSDN article on creating self-updating applications.

2

Một nhóm tôi đã được trên thực hiện điều này bằng cách tạo ra một ứng dụng di động thứ hai (bên ngoài của ứng dụng đó đang được cập nhật) trên các thiết bị di động đó là chịu trách nhiệm tải xuống và chạy CAB.

  • Trên mỗi dock, ứng dụng chính được xác định nếu cần cập nhật thông qua cuộc gọi dịch vụ web.
  • Nếu phiên bản của nó đã lỗi thời, nó sẽ gọi ứng dụng cập nhật với URI của phiên bản mới để cài đặt và sau đó thoát ra
  • Ứng dụng cập nhật sẽ tải xuống CAB mới và thực hiện các cài đặt/khởi động lại và sửa đổi đăng ký thích hợp.

Điều này phù hợp với chúng tôi.

4

Không cần thiết phải tạo một ứng dụng chuyên dụng để cập nhật, ít nhất là không phải trên WM 6 với .netcf 3.5. Tôi đang tải tập tin .cab bằng cách sử dụng một webservice và sau đó bắt đầu một quá trình mới và gọi wceload để thực hiện cài đặt cab im lặng.Đây sẽ chăm sóc của tắt ứng dụng của tôi chạy, gỡ bỏ cài đặt nó và sau đó thực hiện quá trình cài đặt như được nêu trong MSDN docs here

Trong Windows Mobile Phiên bản 5.0 và sau đó, khi sử dụng Wceload.exe phải cài đặt lại một file .cab, Wceload. exe gỡ cài đặt phiên bản đã cài đặt trước của tệp .cab trước khi cài đặt phiên bản mới. Trong phần gỡ bỏ của quá trình này, Wceload.exe đóng bất kỳ thực thi hiện đang chạy đã được cài đặt trên thiết bị mục tiêu sử dụng một file .cab, dựa trên tên tập tin của họ. Wceload.exe cũng đóng bất kỳ tệp thực thi nào là đích của thao tác tệp, chẳng hạn như di chuyển hoặc sao chép. Để đóng một tệp thực thi, Wceload.exe gửi WM_CLOSE đến tất cả các cửa sổ cấp cao thuộc sở hữu của quy trình. Nếu quá trình này không thoát một cách kịp thời sau khi nhận được tin nhắn WM_CLOSE, sau đó Wceload.exe buộc đóng nó bằng cách gọi TerminateProcess. Wceload.exe không cố gắng đóng các tập tin thực thi được vận chuyển trong hình ảnh thời gian chạy trên thiết bị đích.

Tôi cũng có một cesetup.dll để xóa thêm các tệp trong khi gỡ cài đặt.

Vấn đề lớn tôi có là tôi không thể thay đổi thư mục cài đặt cho ứng dụng của mình khi cài đặt im lặng và mặc định là% installDir% thuộc tính từ tệp .inf của tôi. Và xây dựng một .cab riêng cho mọi thiết bị muốn cập nhật không phải là một giải pháp tuyệt vời.

0

Bạn đang đúng. sau wM5, 6 ... WCEload chỉ dừng lại aplication nếu nó được cài đặt, vì vậy bạn không cần phải dừng nó bằng tay. nhưng bạn cần phải cài đặt các bản cập nhật trong chế độ im lặng vì nếu không phải là người sử dụng có thể hủy bỏ nó, vì vậy bạn cần phải cài đặt taxi silen. tải xuống từ

http://cssoft.freehosting.net/website2/default.html

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