2009-07-13 24 views
8

Tôi đã phát triển các ứng dụng chuyên nghiệp dành cho Windows Mobile 6 sử dụng khung được nhắm mục tiêu như .NET CF 3.5 và SDK chuyên nghiệp 6. Cũng đã tạo tệp SmartDeviceCab của nó. Khi tôi cài đặt nó trên thiết bị không có CF 3.5 nó không chạy ứng dụng của tôi (vì thiết bị có .NET CF 2.0). Bây giờ tôi biết rằng tôi phải có NET CF 3.5 trên thiết bị mà tôi muốn chạy ứng dụng của mình. Làm cách nào để phát hiện phiên bản CF hiện tại và cài đặt (nếu cần) CF 3.5 từ thiết lập cab của tôi. Tôi đã khám phá và đi qua nhiều trên Setup.dll nhưng cách quá cũ của nó và tôi đã không tìm cách để chạy tập tin cab từ Setup.dll của tôi. Xin hãy giúp tôi tìm giải pháp. Sẽ biết ơn nếu liên kết/mã mẫu được cung cấp. Bực bội hơn là, tôi chưa bao giờ chạm VC++.Windows Mobile Cab Setup để phát hiện .NET CF 3.5 và cài đặt nó

Tôi đã trải qua: Detecting if the Compact Framewok is installed on mobile device và các liên kết của nó.

Shailesh K.

Trả lời

1

Trong WM 6, tôi tin rằng (nó có thể đã WM 5), họ không được phép chạy taxi từ bên trong buồng lái khác. Cách duy nhất để làm tất cả trong một lần là thông qua một MSI từ máy tính để bàn. Có các mẫu MSDN về cách bắt đầu.

Những gì tôi làm trong ứng dụng của tôi là phát hiện phiên bản .NET CF trong cab của tôi. Nếu họ không có quyền, tôi không cài đặt và yêu cầu người dùng cài đặt từ máy tính để bàn. Nó không phải là giải pháp tốt nhất, nhưng MS không thực sự cho chúng ta một sự lựa chọn.

+0

Hi ageektrapped, Cám ơn trả lời. Bạn nói rằng bạn đang phát hiện phiên bản .NET CF từ cab của bạn. Bạn có thể cung cấp cách (mã) bạn đang phát hiện phiên bản .NET CF và kiểm tra xem nó có đúng hay không? Cảm ơn. Shailesh K :) – engineer

+0

Tôi đã sửa đổi mã được cung cấp trong mẫu này http://msdn.microsoft.com/en-us/library/aa446531.aspx#netcfdepl_topic3 ​​ – ageektrapped

1

Đây không thực sự là câu trả lời cho câu hỏi của bạn, nhưng trong một tình huống như thế này tôi sẽ triển khai hai CAB: ứng dụng của tôi và .Net CF 3.5 CAB. Nó không phải là khó để nói với một khách hàng/khách hàng để cài đặt ứng dụng của bạn, và nếu nó không hoạt động để sau đó cài đặt cab .Net.

0

Cảm ơn bạn đã trả lời. Nó thực sự đáng thất vọng rằng MS không có giải pháp đơn giản cho việc này. Tôi sẽ đi với MusicGenesis cho bây giờ. Tôi có thể cung cấp cho người dùng hai xe taxi (1) MyApp.cab (2) NETCFv35.wm.armv4i.cab. Nhưng tôi muốn biết rằng "NETCFv35.wm.armv4i.cab" sẽ hoạt động với tất cả các thiết bị. Tôi nghe nói về các thiết bị khác nhau với các bộ lệnh khác nhau như MISP, ARM vv. NETCFv35.wm.armv4i.cab có hoạt động cho tất cả Windows Mobile 6 Professional (và cao hơn 6.1, 6.5) hay những gì tôi phải làm để quản lý các thiết bị khác?

Shailesh K

+3

Không, Armv4 sẽ không hoạt động trên bất kỳ nền tảng nào, mặc dù đó là CPU phổ biến nhất hiện nay. Khách hàng của bạn nên lấy gói .msi tại đây: http://www.microsoft.com/downloads/details.aspx?FamilyID=E3821449-3C6B-42F1-9FD9-0041345B3385&displaylang=vi –

0

Bạn đã sử dụng bất kỳ 3.5 cụ thể của NET API đó sẽ ngăn cản bạn nhắm mục tiêu NET 2.0 Framework? Nếu không (hoặc nếu nó rất ít), tôi sẽ xem xét chỉ nhắm mục tiêu 2.0.

Bạn có thể ngạc nhiên khi thay đổi phiên bản Khung mà bạn đang nhắm mục tiêu (tiếc là bạn không thể vào nút Thuộc tính của nút Dự án trong Solution Explorer như bạn có thể với các loại dự án khác trong Visual Studio). Tôi sẽ đề xuất tạo một dự án mới nhắm mục tiêu Khung 2.0 và thả tất cả mã nguồn của bạn vào, biên dịch và xem bạn có bao nhiêu lỗi. Hy vọng là trong khoảng 5-10 phút, bạn đã hoàn thành một ứng dụng được biên dịch và đang chạy, không có vấn đề phụ thuộc .NET Framework nữa.

Khi lên kế hoạch cho một ứng dụng dành cho thiết bị di động mà tôi hy vọng sẽ viết, tôi đã chọn để gắn bó với .NET 2.0 vì rất nhiều thiết bị không được gửi kèm theo 3.5 theo mặc định.

+0

Xin chào mkmurray, Cảm ơn câu trả lời của bạn. Có, tôi đã thử trước đó và nó đã làm việc cho tôi. Nhưng đây không phải là giải pháp (vĩnh viễn), tôi nghĩ vậy. Trong tương lai nếu tôi cần phát triển ứng dụng dựa trên CF 3.5 thì một lần nữa tôi sẽ bị mắc kẹt vào thời điểm này. Vì vậy, tôi đang tìm kiếm giải pháp lâu dài sẽ giúp tôi trong việc triển khai WM trong tương lai. Shailesh K. – engineer

1

Bây giờ Windows Market Place đã có, vì vậy chúng tôi không cần phải quan tâm đến các phiên bản .NET CF bắt buộc. Windows Market Place sẽ thực hiện yêu cầu. :)

+0

WMP trở nên khá chậm khi cả hai * người dùng đang sử dụng cùng một lúc. Haw. : P – MusiGenesis

3

Rất đơn giản. Nó có một mã C++ nhỏ, nhưng bạn không phải thay đổi nó chút nào. Nó chỉ đơn giản là một vấn đề của việc tạo ra một dự án cab thiết bị thông minh thứ hai có chứa các tập tin cab. NET bạn muốn cài đặt (3.5 trong trường hợp của bạn), và trao đổi DLL cài đặt cho một trong những được tạo ra từ dự án C++ bao gồm trong mẫu. Bạn chỉ cần thêm các giá trị đăng ký mô tả nơi các tập tin cab bạn muốn cài đặt và bạn đang vàng. Bạn không cần phải phát hiện phiên bản .NET mà họ đã cài đặt, chỉ cần ném nó vào đó và nó sẽ cài đặt trên đầu của bất kỳ cài đặt hiện có nào. Có một sách trắng đầy đủ giải thích nó trong mẫu, cũng như mã nguồn. Chỉ cần tải xuống Windows Mobile 6 SDK và điều hướng đến thư mục này trên máy tính của bạn sau khi cài đặt nó. Mở tài liệu có tiêu đề "MultiCab Whitepaper.doc" và làm theo hướng dẫn.

C: \ Program Files \ Windows Mobile 6 SDK \ Samples \ Common \ CPP \ Win32 \ multicabinstall

tôi sử dụng này cho dự án riêng của tôi và nó hoạt động rất tốt!

0

Đối với điều này tôi đã sử dụng NSIS. Đã một vài tháng kể từ khi tôi viết kịch bản cài đặt, vì vậy một số chi tiết phải mờ.

Trước tiên tôi cài đặt .NET CF 3.5. Tôi sử dụng tệp NETCFSetupv35.msi tự động cài đặt .NET CF 3.5 trên thiết bị di động nếu nó chưa tồn tại. Nếu .NET CF 3.5 đã tồn tại, nó sẽ hiển thị một hộp thoại nói rằng nó đã tồn tại (đối với chúng tôi điều này đã được chấp nhận). Bạn có thể tìm/viết một ứng dụng sẽ thiết lập giá trị trả về có thể được đọc bởi ExecWait (http://nsis.sourceforge.net/Docs/Chapter4.html), và sau đó chỉ gọi msi nếu .NET CF chưa được cài đặt.

Sau đó, tôi có 8 xe taxi để cài đặt, 3 cho SQL Server Compact 3.5 (bắt buộc) và 4 cho phần mềm mà chúng tôi phụ thuộc vào (tùy chọn, tùy thuộc vào ứng dụng khách) và 1 cho ứng dụng của chúng tôi. Tôi đã làm theo hướng dẫn này: http://nsis.sourceforge.net/NSIS_for_Smartphone. Đã viết một phần cho mỗi phần, nếu bạn muốn đọc chỉ sau đó thêm SectionIn 1 RO sau phần đó. Sau đó, gọi CeAppMgr chuyển làm đối số cho mỗi CAB.

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